Fehlerbehebung „java.security.cert.CertificateException: No Subject Alternative Names Present“-Fehler in Java
Beim Herstellen einer Verbindung zu einem HTTPS-Webdienst Wenn Sie einen Java-Client verwenden, kann es frustrierend sein, auf die Ausnahme „java.security.cert.CertificateException: Keine alternativen Antragstellernamen vorhanden“ zu stoßen. So beheben Sie dieses Problem:
Zertifikatinformationen überprüfen
Um die Zertifikatdetails des Servers zu erhalten, verwenden Sie den Befehl „openssl s_client -showcerts -connect AAA.BBB.CCC“. .DDD:9443 > Die resultierende Datei „certs.txt“ enthält:
Alternative Lösung
Bezüglich Schritt 1 der vorgeschlagenen Lösung:
Bezüglich Schritt 2 des Vorgeschlagene Lösung:
Empfohlener Ansatz
Berücksichtigen Sie die folgenden Alternativen:
// In the ISomeService class: static { disableSslVerification(); } private static void disableSslVerification() { // ... [Code to disable HTTPS checks as described in the provided answer] }
// In the ISomeService class: HostnameVerifier customVerifier = new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { // Perform custom hostname verification, such as accepting the IP address (AAA.BBB.CCC.DDD). return true; } }; HttpsURLConnection httpsConn = (HttpsURLConnection) url.openConnection(); httpsConn.setHostnameVerifier(customVerifier);
Achtung: Das Deaktivieren von HTTPS-Prüfungen oder das Implementieren eines benutzerdefinierten Hostnamen-Verifizierers kann die Sicherheit gefährden. Verwenden Sie diese Ansätze nur zum Testen oder in kontrollierten Umgebungen.
Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „java.security.cert.CertificateException: No Subject Alternative Names Present' in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!