Java over HTTPS/SSL でクライアント証明書を正常に使用するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-23 01:59:13
オリジナル
306 人が閲覧しました

How Can I Successfully Use Client Certificates with Java over HTTPS/SSL?

Java で HTTPS/SSL 経由のクライアント証明書を使用する

HTTPS 経由で暗号化された接続を確立する場合、クライアント証明書を使用すると、追加のセキュリティ層が提供されます。サーバーに対してクライアントの ID を認証します。この記事では、Java との接続を確立しようとするときに直面する一般的な問題、つまり、サーバーのルート証明書とクライアントの証明書がデフォルトのキーストアに存在するにもかかわらず、クライアントのハンドシェイクが失敗するという問題について説明します。

サーバーのルート証明書をデフォルトの Java キーストアでは、javax.net.ssl.SSLHandshakeException が解決されます。ただし、クライアント証明書にはまだ課題があります。

クライアント証明書認証を正常に実装するには、次の手順が重要です。

  1. サーバー証明書をトラストストア:

    次を使用して、自己署名サーバー証明書をトラストストアにインポートします。コマンド:

    keytool -import -alias gridserver -file gridserver.crt -storepass $PASS -keystore gridserver.keystore
    ログイン後にコピー
  2. システム プロパティの設定:

    次のシステム プロパティを設定します:

    -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
    ログイン後にコピー
  3. を確立する接続:

    更新されたプロパティを使用して 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート