Conexión Java HTTPS con error de certificado SSL

El problema es que su Java no está confiando en el certificado. Tienes que importarlo a tu Java truststore.

# Copy the certificate into the directory Java_home\Jre\Lib\Security
# Change your directory to Java_home\Jre\Lib\Security>
# Import the certificate to a trust store.
# Here's the import command:

keytool -import -alias ca -file somecert.cer -keystore cacerts -storepass changeit [Return]

Trust this certificate: [Yes]

changeit es la contraseña predeterminada del almacén de confianza.

Para cada certificado que haya importado a su almacén de confianza, debe proporcionar un nuevo alias.

El método de importación es una cita de aquí

Respuesta 1

Este mensaje se debe a:

  1. O bien, el JRE no tiene la CA raíz como una entrada confiable en su almacén de claves.
  2. El servidor no está enviando una cadena adecuada.

Pero 2 no es válido en su caso, ya que el navegador puede construir la cadena y validar el certificado.

En consecuencia, necesita obtener la CA raíz y colocarla en el almacén de claves JRE como una entrada confiable. Hay muchos recursos que documentan el "cómo". Uno de ellos es: https://access.redhat.com/documentation/en-US/Fuse_Message_Broker/5.3/html/Security_Guide/files/i379776.html

EDITAR 1: Dado que desea compartir la aplicación de Java, valdría la pena el esfuerzo de obtener un certificado de una CA cuya raíz ya es de confianza en el almacén de confianza para las versiones de Java que admite su aplicación.

Respuesta: 2

Según tengo entendido, esto está relacionado con el Java Certificate Keystore. Su certificado no es aceptado por Java. Aquí hay un enlace sobre cómo agregar su certificado al almacén de claves de Certificados de confianza de Java: https://docs.oracle.com/javase/tutorial/security/toolsign/rstep2.html

Respuesta: 3

Ya hay algunas preguntas como esta en SO (como esta: falló la construcción de la ruta PKIX: no se pudo encontrar la ruta de certificación válida para el objetivo solicitado).

La respuesta habitual a esto es que su cliente java no tiene certificados necesarios para completar la cadena de certificados.

Si necesita una validación de certificado adecuada, deberá averiguar dónde se descompone la cadena de certificados. Si no lo hace (porque esta es una prueba de concepto o un entorno limitado de desarrollo, o lo que sea), puede solucionarlo fácilmente agregando el certificado al almacén de confianza que utiliza con su cliente.

Editar:

En cuanto a por qué su navegador acepta esto, es probable que su navegador tenga los certificados en la cadena que necesita o le haya dicho distraídamente a su navegador que confíe en el certificado a pesar de que tampoco pudo validarlo.

Respuesta: 4

¿Cómo nombra las interfaces de repositorio y servicio y sus clases de implementación? Por ejemplo, tengo un modelo con el nombre Pregunta. ¿Cómo llamarías al repositorio (interfaz e implementación) ...

Tengo un problema al abrir extensiones * .jnlp con Internet Explorer. La extensión se abre correctamente en Chrome y Firefox, lo que me hace creer que es un problema con IE y posiblemente el servidor web / ...

Tengo un modelo de tabla personalizado cuyos datos quiero editar en una JXTable, pero solo lectura en una segunda JXTable. ¿Se puede hacer esto sin tener dos modelos separados? ¿Hay alguna forma de anular el modelo ...

Aunque he usado Swing antes, nunca he usado un diseñador de GUI y tengo problemas para acceder a los componentes que he dejado caer en mi panel desde mi código fuente. Creé un nuevo proyecto y elegí ...