Heim > Java > javaLernprogramm > Hauptteil

Wie behebt man den Fehler „java.security.cert.CertificateException: No Subject Alternative Names Present' in Java?

DDD
Freigeben: 2024-11-08 02:18:02
Original
902 Leute haben es durchsucht

How to Fix the

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:

  • Zertifikatskette: Identifizieren Sie das Zertifikat, das „CN=AAA.BBB.CCC.DDD“ enthält.
  • Serverzertifikat: Extrahieren Sie den Abschnitt zwischen „-----BEGIN CERTIFICATE-----“ und „-----END CERTIFICATE-----“ für dieses Zertifikat.

Alternative Lösung

Bezüglich Schritt 1 der vorgeschlagenen Lösung:

  • Das Extrahieren des Zertifikats allein ist falsch; es sind zusätzliche Änderungen erforderlich.
  • Ziel ist es, ein Zertifikat zu erstellen, das mit der IP-Adresse (AAA.BBB.CCC.DDD) übereinstimmt.

Bezüglich Schritt 2 des Vorgeschlagene Lösung:

  • Die Änderung des Zertifikats zur Aufnahme von AAA.BBB.CCC.DDD erfordert spezielle Tools und Fachwissen, sodass dieser Schritt undurchführbar ist.

Empfohlener Ansatz

Berücksichtigen Sie die folgenden Alternativen:

  • HTTPS-Prüfungen deaktivieren:
// In the ISomeService class:
static {
    disableSslVerification();
}

private static void disableSslVerification() {
    // ... [Code to disable HTTPS checks as described in the provided answer]
}
Nach dem Login kopieren
  • Implementieren Sie einen benutzerdefinierten Hostnamen-Verifizierer:
// 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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!