J'ai un fichier pkcs12. Je dois l'utiliser pour me connecter à une page Web en utilisant le protocole https. Je suis tombé sur un code où afin de se connecter à une page Web sécurisée i besoin de définir les propriétés système suivantes:Comment se connecter à un site Web sécurisé en utilisant SSL en Java avec un fichier 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");
Je le fichier p12 (pkcs12). Tout ce dont j'ai besoin est un fichier de truststore.
I extrait les certificats à l'aide:
openssl.exe pkcs12 -in c:/mykey.p12 -out c:/cert.txt -nokeys -clcerts
maintenant converti le fichier PEM cert der
openssl.exe x509 -in c:/cert.txt -outform DER -out c:/CAcert.der
Adding le fichier der à un keystore
keytool -import -file C:/Cacert.der -keystore mytruststore
Maintenant je le truststore, mais quand je l'utilise, j'obtiens l'erreur suivante
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)
Mise à jour: Après avoir retiré certaines propriétés et la mise seulement "trustStore", "trustStorePassword" et "trustStoreType" bien, je suis l'exception suivante
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
Aide S'il vous plaît.
Si vous pouviez poster plus de trace de la pile (informations provenant des cadres de la pile, pas seulement le message d'exception), je vais y jeter un coup d'oeil. – erickson
Une autre chose à vérifier est que votre emplacement de magasin de confiance est correctement spécifié; Si javax.net.ssl.trustStore est spécifié mais n'existe pas, un magasin de confiance vide est créé à la volée. Votre nouveau message d'erreur donne l'impression que cela pourrait se produire. – erickson