HTTPS/SSL 経由の Java クライアント証明書
リモート サーバーとの HTTPS 接続を確立する場合、クライアントを提示する必要があるシナリオがある場合があります。認証用の証明書。これには、サーバーのルート証明書をトラストストアにインポートし、クライアント証明書とそのパスワードを正しく構成する必要があります。
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException を回避するには: PKIX パスの構築に失敗する問題がある場合は、次のコマンドを使用してサーバーのルート証明書をトラストストアにインポートする必要があります。コマンド:
keytool -import -alias gridserver -file gridserver.crt -storepass $PASS -keystore gridserver.keystore
次に、次のプロパティを設定してキーストアとトラストストアの情報を指定します。
-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
この構成では、HttpsURLConnection を作成し、クライアントを処理するための SSLSocketFactory を設定できます。証明書の検証:
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); URL url = new URL("https://gridserver:3049/cgi-bin/ls.py"); HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); conn.setSSLSocketFactory(sslsocketfactory);
そこから、HTTPS 接続からの応答を次のように読み取ることができます。希望します。
以上がHTTPS で Java クライアント証明書を使用するときに javax.net.ssl.SSLHandshakeException を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。