Tengo un archivo pkcs12. Necesito usar esto para conectarme a una página web usando el protocolo https. Me encontré con algo de código, donde con el fin de conectarse a una página web segura i necesidad de establecer las siguientes propiedades del sistema:Cómo conectarse a un sitio web seguro usando SSL en Java con un archivo pkcs12?
System.setProperty("javax.net.ssl.trustStore", "myTrustStore");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
System.setProperty("javax.net.ssl.keyStore", "new_cert.p12");
System.setProperty("javax.net.ssl.keyStorePassword", "newpass");
tengo el archivo p12 (pkcs12). Todo lo que necesito es un archivo de almacén de confianza.
que extrae los certificados usando:
openssl.exe pkcs12 -in c:/mykey.p12 -out c:/cert.txt -nokeys -clcerts
Ahora convertido el archivo cert PEM der
openssl.exe x509 -in c:/cert.txt -outform DER -out c:/CAcert.der
Ahora añadir el archivo der a un almacén de claves
keytool -import -file C:/Cacert.der -keystore mytruststore
Ahora tengo el almacén de confianza, pero cuando lo uso, obtengo el siguiente error
Exception in thread "main" java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
Actualización: Después de eliminar ciertas propiedades y establecer sólo la "trustStore", "trustStorePassword" y la propiedad "trustStoreType", me dio la siguiente excepción
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
por favor ayuda.
Si pudieras publicar más del rastro de pila (información de los marcos de pila, no solo el mensaje de excepción) lo echaré un vistazo. – erickson
Otra cosa que debe verificar es que la ubicación de su tienda de confianza esté correctamente especificada; si se especifica javax.net.ssl.trustStore pero no existe, se crea un almacén fiduciario vacío sobre la marcha. Su nuevo mensaje de error lo hace sonar como si esto pudiera estar sucediendo. – erickson