Klien Java Mengendalikan Sijil SSL Ditandatangani Sendiri
Apabila pelanggan Java menemui sambungan SSL ke pelayan dengan sijil yang ditandatangani sendiri, ia mungkin gagal dengan ralat seperti:
sun.security.validator.ValidatorException: PKIX path building failed
Pilihan 1: Menambah pada Truststore
Untuk mewujudkan kepercayaan, tambahkan sijil yang ditandatangani sendiri pada gedung amanah JVM:
<JAVA_HOME>/bin/keytool -import -v -trustcacerts \ -alias server-alias -file server.cer \ -keystore cacerts.jks -keypass changeit \ -storepass changeit
Pilihan 2: Melumpuhkan Pengesahan Sijil (Tidak Disyorkan)
Lumpuhkan pengesahan sijil dengan yang berikut kod:
// Trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] certs, String authType) {} @Override public void checkServerTrusted(X509Certificate[] certs, String authType) {} @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } } }; // Install trust manager SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
Walau bagaimanapun, melumpuhkan pengesahan sijil tidak disyorkan kerana ia menyebabkan pelanggan terdedah kepada serangan man-in-the-middle.
Atas ialah kandungan terperinci Bagaimanakah Pelanggan Java Boleh Mengendalikan Sijil SSL yang Ditandatangani Sendiri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!