Importar certificados SSL en JAVA

Si alguna vez has visto la siguiente traza en una aplicación JAVA:

windows Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Entonces el problema es que JAVA no conoce el certificado SSL de dicho servidor, este problema se puede solucionar importando el certificado SSL del servidor manualmente.

JAVA almacena los certificados SSL de confianza en un fichero local, de modo que la idea es descargarnos el certificado SSL de nuestro servidor para luego incorporarlo a dicho fichero desde la línea de comandos.

Obtener el certificado SSL

Lo primero será bajarnos el certificado SSL a importar, para ello podemos usar nuestro navegador, normalmente a la izquierda de la barra de direcciones encontrarás un icono de candado, si haces click verás la información de seguridad del sitio, pudiendo bajarnos el certificado a un fichero.

Por ejemplo en Firefox (en otros navegadores habrá opciones similares pero no idénticas):

  1. Click en el candado.
  2. Click en la flecha a la derecha del certificado.
  3. Click en Más información.
  4. Click en Ver certificado.
  5. Click en Detalles.
  6. Click en Exportar.

Importar el certificado SSL

Para importar el certificado tenemos que abrir una línea de comandos e ir a la carpeta de nuestra instalación de JRE \lib\security:

<path_to_jre>\lib\security> keytool -import -noprompt -trustcacerts -alias <server_alias> -file <certificate_path> -keystore cacerts

Reemplaza <server_alias> y <certificate_path> por los valores que correspondan en tu caso.

Comprobaciones

Para comprobar si el certificado se ha importado bien (además de claro está ya no tener el mensaje de error de la aplicación JAVA) puedes listar los certificados SSL almacenados:

lib\security> keytool -list -keystore cacerts

Deja un comentario