Heim >Java >javaLernprogramm >Wie kann ein Java-Client mit selbstsignierten SSL-Zertifikaten umgehen?

Wie kann ein Java-Client mit selbstsignierten SSL-Zertifikaten umgehen?

Susan Sarandon
Susan SarandonOriginal
2024-12-19 13:17:09292Durchsuche

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

Java-Client verarbeitet selbstsignierte SSL-Zertifikate

Wenn ein Java-Client auf eine SSL-Verbindung zu einem Server mit einem selbstsignierten Zertifikat stößt, es kann mit einem Fehler wie dem folgenden fehlschlagen:

sun.security.validator.ValidatorException: PKIX path building failed

Option 1: Hinzufügen zu Truststore

Um Vertrauen herzustellen, fügen Sie das selbstsignierte Zertifikat zum JVM-Truststore hinzu:

<JAVA_HOME>/bin/keytool -import -v -trustcacerts \
-alias server-alias -file server.cer \
-keystore cacerts.jks -keypass changeit \
-storepass changeit

Option 2: Deaktivieren der Zertifikatsvalidierung (nicht empfohlen)

Deaktivieren Sie die Zertifikatsvalidierung mit dem folgenden Code:

// 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());

Allerdings Das Deaktivieren der Zertifikatsvalidierung wird nicht empfohlen, da der Client dadurch anfällig für Man-in-the-Middle-Angriffe wird.

Das obige ist der detaillierte Inhalt vonWie kann ein Java-Client mit selbstsignierten SSL-Zertifikaten umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn