Überschreiben der SSL-Zertifikatsvalidierung in Java-Clients
Beim Herstellen einer Verbindung zu Servern mit selbstsignierten oder abgelaufenen SSL-Zertifikaten ist das Standardverhalten von Java wie folgt die Verbindung ablehnen. Um solche Verbindungen zu ermöglichen, haben Sie zwei Hauptoptionen:
Option 1: Hinzufügen des Zertifikats zum Truststore
Dabei geht es um den Aufbau einer Vertrauenskette durch den Import des Serverzertifikats in den Truststore der JVM:
<JAVA_HOME>/bin/keytool -import -v -trustcacerts \ -alias server-alias -file server.cer \ -keystore cacerts.jks -keypass changeit \ -storepass changeit
Option 2: Zertifikat deaktivieren Validierung
Dieser Ansatz wird nicht empfohlen, da er die Sicherheit schwächt, kann aber mit dem folgenden Code durchgeführt werden:
// Create a trust manager that doesn't validate certificate chains TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } 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 SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); // Access the HTTPS URL without certificate validation URL url = new URL("https://hostname/index.html");
Empfehlung
Für erhöhte Sicherheit wird dringend empfohlen, die Zertifikatvalidierung (Option 2) nicht zu deaktivieren und stattdessen eine seriöse Zertifizierungsstelle zum Signieren Ihres Zertifikats zu verwenden Serverzertifikat (oder importieren Sie das selbstsignierte Zertifikat in den Truststore).
Das obige ist der detaillierte Inhalt vonWie gehe ich mit selbstsignierten oder abgelaufenen SSL-Zertifikaten in Java um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!