Certificats client Java sur HTTPS/SSL
Lors de l'établissement de connexions HTTPS avec des serveurs distants, il peut y avoir des scénarios dans lesquels vous devez présenter un client certificat d'authentification. Cela nécessite que le certificat racine du serveur soit importé dans un truststore et que le certificat client avec son mot de passe soit configuré correctement.
Pour surmonter l'exception javax.net.ssl.SSLHandshakeException : sun.security.validator.ValidatorException : Problème d'échec de la création du chemin PKIX, vous devez importer le certificat racine du serveur dans un truststore à l'aide de la commande suivante :
keytool -import -alias gridserver -file gridserver.crt -storepass $PASS -keystore gridserver.keystore
Ensuite, définissez le propriétés suivantes pour spécifier les informations du keystore et du truststore :
-Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.trustStoreType=jks -Djavax.net.ssl.keyStore=clientcertificate.p12 -Djavax.net.ssl.trustStore=gridserver.keystore -Djavax.net.debug=ssl # very verbose debug -Djavax.net.ssl.keyStorePassword=$PASS -Djavax.net.ssl.trustStorePassword=$PASS
Avec cette configuration, vous pouvez créer une HttpsURLConnection et configurer SSLSocketFactory pour gérer la vérification du certificat client :
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); URL url = new URL("https://gridserver:3049/cgi-bin/ls.py"); HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); conn.setSSLSocketFactory(sslsocketfactory);
À partir de là, vous pouvez lire la réponse de la connexion HTTPS comme vous le souhaitez.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!