ホームページ >Java >&#&チュートリアル >Java で特定の SSL 接続にカスタム証明書の信頼を設定する方法

Java で特定の SSL 接続にカスタム証明書の信頼を設定する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-18 13:48:14840ブラウズ

How to Set Custom Certificate Trust for Specific SSL Connections in Java?

対象の接続に対するカスタム証明書の信頼の設定

問題の説明

外部モジュールをアプリケーションに統合するには、SSL へのアクセスが必要です- 自己署名証明書を使用した安全な Web サイト。証明書の信頼性に問題があるため、既存のコードは失敗します。課題は、他の接続の信頼性を損なったり、システム全体の証明書ストアを変更したりすることなく、アプリケーションがこの特定の接続に対してのみこの自己署名証明書を受け入れることができるようにすることです。

最適なソリューション

特定の接続に対して自己署名証明書を選択的に信頼するには、カスタム SSLSocket ファクトリを作成し、確立する前に HttpsURLConnection に設定します。接続:

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

SSLSocket ファクトリの作成

SSLSocket ファクトリを作成するには、次のように初期化します:

/* Load the keyStore that includes self-signed cert as a "trusted" entry. */
KeyStore keyStore = ... 
TrustManagerFactory tmf = 
  TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keyStore);
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null, tmf.getTrustManagers(), null);
sslFactory = ctx.getSocketFactory();

キー ストアのロード

自己署名証明書を「信頼できるエントリ」として含むキー ストア:

KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(trustStore, trustStorePassword);
trustStore.close();

代替キー ストアの読み込み方法

または、keytool を使用して PEM 形式をインポートします証明書をキーストアに保存します:

keytool -import -file selfsigned.pem -alias server -keystore server.jks

以上がJava で特定の SSL 接続にカスタム証明書の信頼を設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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