ホームページ >Java >&#&チュートリアル >Java で特定の接続に対して自己署名証明書を選択的に受け入れるにはどうすればよいですか?
サードパーティ サービスへの SSL で保護された接続を確立する場合、サーバーの証明書を使用して中間者攻撃を防ぎます。ただし、自己署名証明書は信頼性の問題を引き起こす可能性があり、開発者はそれに応じて Java アプリケーションを構成する必要があります。この記事では、他のアプリケーション コンポーネントに影響を与えることなく、特定の接続に対する自己署名証明書の選択的な受け入れを実装するためのベスト プラクティスと方法について説明します。
推奨されるアプローチは、SSLSocket ファクトリを作成することです。これには自己署名証明書が組み込まれており、それを HttpsURLConnection に設定してから、
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setSSLSocketFactory(sslFactory); conn.setMethod("POST");
SSLSocket ファクトリを初期化するために、開発者は自己署名証明書を信頼できるエントリとして含むキーストアをロードできます。
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 keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); keyStore.load(trustStore, trustStorePassword); trustStore.close();
必要に応じて、次に示すように、CertificateFactory または keytool を使用して証明書を keyStore にインポートできます。
keytool -import -file selfsigned.pem -alias server -keystore server.jks
カスタム SSLSocket ファクトリを使用すると、開発者は、他の SSL で保護された接続に対する信頼の整合性を維持しながら、特定の接続に対して自己署名証明書を受け入れる柔軟性が得られます。アプリケーション内でのコミュニケーション。この方法は、アプリケーションの全体的なセキュリティ体制を損なうことなく、自己署名証明書の信頼の問題に対処する、対象を絞った非侵入的なソリューションを提供します。
以上がJava で特定の接続に対して自己署名証明書を選択的に受け入れるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。