Rumah >Java >javaTutorial >Bagaimanakah cara saya membetulkan ralat 'java.security.cert.CertificateException: Tiada nama alternatif subjek' semasa mengakses perkhidmatan web melalui HTTPS?
Membetulkan "java.security.cert.CertificateException: Tiada nama alternatif subjek hadir" Ralat
Apabila mengakses perkhidmatan web melalui HTTPS menggunakan pelanggan Java, menghadapi ralat "java.security.cert.CertificateException: Tiada nama alternatif subjek hadir" menunjukkan ketidakpadanan antara nama subjek sijil dan alamat hos.
Untuk menyelesaikan isu ini, ikut langkah berikut:
Walau bagaimanapun, kaedah ini mungkin tidak selalunya boleh dilaksanakan jika anda tidak mempunyai kawalan ke atas sijil pelayan.
Penyelesaian alternatif ialah melumpuhkan semakan HTTPS. Pendekatan ini melibatkan penciptaan pengurus amanah tersuai dan pengesah nama hos yang membenarkan semua sijil diterima. Dalam kelas "ISomeService", tambahkan kod berikut:
static { disableSslVerification(); } private static void disableSslVerification() { // Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) { } public void checkServerTrusted(X509Certificate[] certs, String authType) { } } }; // Install the all-trusting trust manager SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); // Create all-trusting host name verifier HostnameVerifier allHostsValid = new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return true; } }; // Install the all-trusting host verifier HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid); }
Perhatikan bahawa melumpuhkan semakan HTTPS tidak disyorkan untuk persekitaran pengeluaran kerana kebimbangan keselamatan.
Atas ialah kandungan terperinci Bagaimanakah cara saya membetulkan ralat 'java.security.cert.CertificateException: Tiada nama alternatif subjek' semasa mengakses perkhidmatan web melalui HTTPS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!