Beim Versuch, eine Verbindung zu einem Server mit einem selbstsignierten oder abgelaufenen SSL-Zertifikat herzustellen Bei Java-Clients tritt möglicherweise ein Fehler auf, der auf einen ungültigen Zertifizierungspfad hinweist. Dieser Fehler kann durch Einrichten einer Vertrauenskette oder Deaktivieren der Zertifikatsvalidierung behoben werden.
Mit Linux Bash:
Exportieren Sie das Serverzertifikat nach a Datei:
openssl s_client -connect server:port -showcerts > server.cer
Zertifikat in den JVM-Truststore importieren:
keytool -import -v -trustcacerts -alias server-alias -file server.cer -keystore cacerts.jks -keypass changeit -storepass changeit
Mit Java Code:
Erstellen Sie einen Trust-Manager, der alle Zertifikate zulässt, indem Sie die Validierungsmethoden überschreiben:
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { ... (overridden methods here) } };
Installieren Sie den Trust-Manager und legen Sie es als Standard für SSL fest Verbindungen:
SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
Es wird dringend empfohlen, Option 1 zu verwenden, da dadurch eine Vertrauenskette aufgebaut wird, anstatt die Zertifikatsvalidierung zu deaktivieren. Dadurch wird sichergestellt, dass die Identität des Servers überprüft werden kann und Man-in-the-Middle-Angriffe abgemildert werden.
Das obige ist der detaillierte Inhalt vonWie kann ich selbstsignierte SSL-Zertifikate in meinem Java-Client akzeptieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!