HTTPS/SSL 経由の Java クライアント証明書: ウォークスルー
シナリオ
Java を検討する6 アプリケーションは、クライアント証明書を使用してリモート サーバーへの HTTPS 接続を確立しようとします。サーバーは自己署名ルート証明書を使用し、パスワードで保護されたクライアント証明書の提示を義務付けています。
チャレンジ
サーバー ルート証明書とクライアント証明書をデフォルトのキーストアの場合、ハンドシェイクの失敗により接続が失敗します。アプリケーションは、クライアント証明書を効果的に利用するためのガイダンスを求めています。
解決策
解決には、次の 3 つの手順が必要です:
トラストストアへのサーバー証明書のインポート: サーバーの自己署名証明書をインポートする必要がありますkeytool ユーティリティを使用してトラストストアに追加します:
keytool -import -alias <server_alias> -file <server_cert>.crt -storepass <password> -keystore <truststore_name>.keystore
JVM プロパティの構成: 特定の JVM プロパティを設定して、トラストストアとキーストアのパス、パスワード、およびタイプ:
-Djavax.net.ssl.keyStoreType=pkcs12 -Djavax.net.ssl.trustStoreType=jks -Djavax.net.ssl.keyStore=<client_cert>.p12 -Djavax.net.ssl.trustStore=<truststore_name>.keystore -Djavax.net.debug=ssl -Djavax.net.ssl.keyStorePassword=<password> -Djavax.net.ssl.trustStorePassword=<password>
更新された接続コード: SSLSocketFactory を使用して HTTPS 接続を確立し、接続の SSL ソケット ファクトリを設定します:
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); URL url = new URL("https://<server_host>:<port>/cgi-bin/ls.py"); HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); conn.setSSLSocketFactory(sslsocketfactory);
このアプローチは、指定されたクライアントを使用してサーバーに対してクライアントを認証することで問題を解決します。証明書。
以上がHTTPS/SSL で Java クライアント証明書を正常に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。