Rumah >Java >javaTutorial >Bagaimanakah Pelanggan Java Boleh Mengendalikan Sijil SSL yang Ditandatangani Sendiri?

Bagaimanakah Pelanggan Java Boleh Mengendalikan Sijil SSL yang Ditandatangani Sendiri?

Susan Sarandon
Susan Sarandonasal
2024-12-19 13:17:09336semak imbas

How Can a Java Client Handle Self-Signed SSL Certificates?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn