HTTPS Web サービスに接続するときの Java の「java.security.cert.CertificateException: No subject Alternative Names Present」エラーのトラブルシューティング
Java クライアントを使用している場合、「java.security.cert.CertificateException: サブジェクトの代替名が存在しません」という例外が発生するとイライラすることがあります。この問題に対処する方法は次のとおりです。
証明書情報の確認
サーバーの証明書の詳細を取得するには、コマンド「openssl s_client -showcerts -connect AAA.BBB.CCC」を使用します。 .DDD:9443 > 証明書.txt;結果のファイル「certs.txt」には次の内容が含まれます:
代替解決策
提案された解決策のステップ 1 について:
手順 2 について提案された解決策:
推奨されるアプローチ
次の代替案を検討してください:
// In the ISomeService class: static { disableSslVerification(); } private static void disableSslVerification() { // ... [Code to disable HTTPS checks as described in the provided answer] }
// In the ISomeService class: HostnameVerifier customVerifier = new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { // Perform custom hostname verification, such as accepting the IP address (AAA.BBB.CCC.DDD). return true; } }; HttpsURLConnection httpsConn = (HttpsURLConnection) url.openConnection(); httpsConn.setHostnameVerifier(customVerifier);
注意: HTTPS チェックを無効にしたり、カスタム ホスト名検証ツールを実装すると、セキュリティが危険にさらされる可能性があります。これらのアプローチは、テストまたは制御された環境でのみ使用してください。
以上がJava で「java.security.cert.CertificateException: サブジェクトの代替名が存在しません」エラーを修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。