Sijil Pelanggan Java melalui HTTPS/SSL
Apabila mewujudkan sambungan HTTPS dengan pelayan jauh, mungkin terdapat senario di mana anda perlu membentangkan pelanggan sijil untuk pengesahan. Ini memerlukan sijil akar pelayan diimport ke kedai amanah dan sijil pelanggan dengan kata laluannya dikonfigurasikan dengan betul.
Untuk mengatasi javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: Pembinaan laluan PKIX isu gagal, anda mesti mengimport sijil akar pelayan ke kedai amanah menggunakan yang berikut arahan:
keytool -import -alias gridserver -file gridserver.crt -storepass $PASS -keystore gridserver.keystore
Seterusnya, tetapkan sifat berikut untuk menentukan maklumat stor kunci dan 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
Dengan konfigurasi ini, anda boleh mencipta HttpsURLConnection dan menetapkan SSLSocketFactory untuk mengendalikan klien pengesahan sijil:
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); URL url = new URL("https://gridserver:3049/cgi-bin/ls.py"); HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); conn.setSSLSocketFactory(sslsocketfactory);
Dari sana, anda boleh membaca respons daripada sambungan HTTPS sebagai dikehendaki.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan javax.net.ssl.SSLHandshakeException Apabila Menggunakan Sijil Pelanggan Java dengan HTTPS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!