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!