Java で HTTPS/SSL 経由のクライアント証明書を使用する
HTTPS 経由で暗号化された接続を確立する場合、クライアント証明書を使用すると、追加のセキュリティ層が提供されます。サーバーに対してクライアントの ID を認証します。この記事では、Java との接続を確立しようとするときに直面する一般的な問題、つまり、サーバーのルート証明書とクライアントの証明書がデフォルトのキーストアに存在するにもかかわらず、クライアントのハンドシェイクが失敗するという問題について説明します。
サーバーのルート証明書をデフォルトの Java キーストアでは、javax.net.ssl.SSLHandshakeException が解決されます。ただし、クライアント証明書にはまだ課題があります。
クライアント証明書認証を正常に実装するには、次の手順が重要です。
サーバー証明書をトラストストア:
次を使用して、自己署名サーバー証明書をトラストストアにインポートします。コマンド:
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 # verbose debug -Djavax.net.ssl.keyStorePassword=$PASS -Djavax.net.ssl.trustStorePassword=$PASS
を確立する接続:
更新されたプロパティを使用して HTTPS 接続を確立します:
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault(); URL url = new URL("https://gridserver:3049/cgi-bin/ls.py"); HttpsURLConnection conn = (HttpsURLConnection)url.openConnection(); conn.setSSLSocketFactory(sslsocketfactory); InputStream inputstream = conn.getInputStream();
次の手順に従うことで、HTTPS/SSL 経由でクライアント証明書を正常に使用できます。 Java では、安全な認証とリモート サーバーとの通信が保証されます。
以上がJava over HTTPS/SSL でクライアント証明書を正常に使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。