Quiero importar un certificado autofirmado a Java para que cualquier aplicación Java que intente establecer una conexión SSL confíe en este certificado.
Hasta ahora, logré importarlo en
keytool -import -trustcacerts -noprompt -storepass changeit -alias $REMHOST -file $REMHOST.pem
keytool -import -trustcacerts -noprompt -keystore cacerts -storepass changeit -alias $REMHOST -file $REMHOST.pem
Aún así, cuando intento correr HTTPSClient.class
sigo obteniendo:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: error en la construcción de la ruta PKIX: sun.security.provider.certpath.SunCertPathBuilderException: no se puede encontrar la ruta de certificación válida para el objetivo solicitado
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())
son completamente innecesarias en la primera parte. El segundo no hace ninguna verificación de cert. Intenta con una llanuraURLConnection
para empezar. ¿Seguro de que haya modificadocacerts
en ellib/security
de la instalación de JRE? ¿Has probado latrustmanager
opción de depuración ?Respuestas:
En Windows, la forma más fácil es usar el portecle del programa .
System.out.println(System.getProperty("java.home"));
En Linux:
Puede descargar el certificado SSL de un servidor web que ya lo está utilizando así:
Opcionalmente, verifique la información del certificado:
Importe el certificado al almacén de claves de Java cacerts:
fuente
ps -ef | grep java
que me dijo que mi Java se estaba ejecutando desde openjdk ubicado en / usr / lib / jvm / java-openjdk / bin / java. Además, si esto es para una aplicación web, recuerde reiniciar. ¡¡Gracias por la ayuda!!fuente
Terminé escribiendo un pequeño script que agrega los certificados a los almacenes de claves, por lo que es mucho más fácil de usar.
Puede obtener la última versión de https://github.com/ssbarnea/keytool-trust
`` `
fuente
Esto funcionó para mí. :)
fuente
Si está utilizando un certificado firmado por una Autoridad de certificación que no está incluido en el archivo de cacerts de Java de forma predeterminada, debe completar la siguiente configuración para las conexiones HTTPS. Para importar certificados en cacerts:
fuente
El comando simple 'keytool' también funciona en Windows y / o con Cygwin.
SI está utilizando Cygwin, aquí está el comando modificado que utilicé desde la parte inferior de la respuesta de "S.Botha":
Ejecute el comando keytool desde su interior, donde proporciona la ruta a su nuevo Cert al final, de esta manera:
Tenga en cuenta, porque si esto está bajo Cygwin, está dando una ruta a un programa que no es Cygwin, por lo que la ruta es similar a DOS y entre comillas.
fuente
Tal vez quiera probar
Honestamente, no tengo idea de dónde coloca su certificado si solo escribe,
cacerts
déle una ruta completafuente
instalar certificado en java linux
/ opt / jdk (versión) / bin / keytool -import -alias aliasname -file certificate.cer -keystore cacerts -storepass contraseña
fuente
fuente