Menyelesaikan masalah "java.security.cert.CertificateException: Tiada Nama Alternatif Subjek Hadir" dalam Java
Apabila menyambung ke perkhidmatan web HTTPS menggunakan klien Java, menghadapi pengecualian "java.security.cert.CertificateException: Tiada nama alternatif subjek hadir" boleh mengecewakan. Begini cara untuk menangani isu ini:
Mengesahkan Maklumat Sijil
Untuk mendapatkan butiran sijil pelayan, gunakan arahan "openssl s_client -showcerts -connect AAA.BBB.CCC .DDD:9443 > Fail "certs.txt" yang terhasil mengandungi:
Penyelesaian Alternatif
Mengenai Langkah 1 Penyelesaian Cadangan:
Mengenai Langkah 2 daripada Cadangan Penyelesaian:
Pendekatan Disyorkan
Pertimbangkan alternatif berikut:
// 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);
Awas: Melumpuhkan semakan HTTPS atau melaksanakan pengesah nama hos tersuai boleh menjejaskan keselamatan. Gunakan pendekatan ini hanya untuk ujian atau dalam persekitaran terkawal.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat "java.security.cert.CertificateException: Tiada Nama Alternatif Subjek Hadir" dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!