ホームページ >Java >&#&チュートリアル >JRE のトラストストアを変更する代わりに、特定の Java 接続にカスタム証明書を使用するにはどうすればよいですか?

JRE のトラストストアを変更する代わりに、特定の Java 接続にカスタム証明書を使用するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-02 18:59:38964ブラウズ

How Can I Use Custom Certificates for Specific Java Connections Instead of Modifying the JRE's Truststore?

Java での特定の接続にカスタム証明書を使用する

Java アプリケーションでは、次を使用してサーバーとの接続が確立される状況が発生する可能性があります。自己署名証明書。 JRE の認証局ストアに証明書をインポートするのは簡単な方法ですが、他の Java アプリケーションへのグローバルな影響があるため、推奨されない可能性があります。

代わりに、よりターゲットを絞った方法として、カスタム SSLSocketFactory をセットアップし、接続を開始する前に、HttpsURLConnection オブジェクトにそれを追加します。

...
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setSSLSocketFactory(sslFactory);
conn.setMethod("POST");
...

SSLSocketFactory を作成するには、最初に「信頼できる」エントリとして自己署名証明書を含む keyStore:

KeyStore keyStore = ...

次に、TrustManagerFactory を初期化します:

TrustManagerFactory tmf = 
  TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());

TrustManagers を使用して SSLContext を初期化します:

SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null, tmf.getTrustManagers(), null);

最後に、 SSLSocketFactory:

sslFactory = ctx.getSocketFactory();

カスタム SSLSocketFactory を使用すると、問題の接続に対してのみ特定の証明書とその受け入れを管理できます。このアプローチにより、アプリケーションやシステム上の他の Java プログラムにグローバルな影響を与えることなく、特定の接続をターゲットにすることができます。

以上がJRE のトラストストアを変更する代わりに、特定の Java 接続にカスタム証明書を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。