自己署名または期限切れの SSL 証明書を使用してサーバーに接続しようとする場合, Java クライアントでは、無効な証明書パスを示すエラーが発生する場合があります。このエラーは、信頼チェーンを確立するか、証明書の検証を無効にすることで解決できます。
Linux Bash の使用:
サーバーの証明書をファイル:
openssl s_client -connect server:port -showcerts > server.cer
証明書を JVM トラストストアにインポートします:
keytool -import -v -trustcacerts -alias server-alias -file server.cer -keystore cacerts.jks -keypass changeit -storepass changeit
Java の使用コード:
検証メソッドをオーバーライドして、すべての証明書を許可するトラスト マネージャーを作成します:
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { ... (overridden methods here) } };
トラスト マネージャーをインストールしますそれをSSLのデフォルトとして設定します接続:
SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
証明書の検証を無効にするのではなく信頼のチェーンを確立するため、オプション 1 を使用することを強くお勧めします。これにより、サーバーの ID が検証され、中間者攻撃が軽減されます。
以上がJava クライアントで自己署名 SSL 証明書を受け入れるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。