Zum Inhalt springen
ecdsa.com
Java (JSSE HostnameChecker)Java

Fehlermeldung

No subject alternative names present

Auch ausgegeben als

  • java.security.cert.CertificateException: No subject alternative names present

JDK 21 und neuer stellen dem Text der Exception „(certificate_unknown) “ voran. Bei DNS-Hostnamen kann ein Zertifikat ohne SANs in Java noch über den Common Name passen; andere Clients (Go, Chrome) lehnen solche Zertifikate rundweg ab.

Java (JSSE HostnameChecker) — certificate without a SAN extension, URL host is an IP address

Was der Fehler bedeutet

Das Zertifikat des Servers hat überhaupt keine Erweiterung Subject Alternative Name, und der Client hat sich über eine IP-Adresse verbunden. Bei IP-Adressen verlangt Java einen IP-SAN-Eintrag und greift nie auf den Common Name zurück – ohne SAN-Erweiterung gibt es also nichts zu vergleichen. Das ist das typische Ergebnis von Zertifikaten, die von alten Skripten nur mit einem CN erzeugt wurden.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Bestätigen, dass die SAN-Erweiterung fehlt

    Gib Subject und subjectAltName aus; erscheint kein SAN in der Ausgabe, muss das Zertifikat neu ausgestellt werden.

    bash
    openssl x509 -in server.pem -noout -subject -ext subjectAltName
    # "No extensions in certificate" / no SAN output -> the certificate must be reissued
  2. 2.

    Mit subjectAltName neu ausstellen

    Füge DNS-Einträge und bei Bedarf IP-Einträge hinzu; den CN behältst du nur noch für die Anzeige.

    bash
    openssl req -new -key server.key -out server.csr -subj "/CN=api.example.com" \
      -addext "subjectAltName=DNS:api.example.com,IP:10.0.0.5"
    # keytool (Java keystores)
    keytool -genkeypair -alias server -keyalg EC -groupname secp256r1 -dname "CN=api.example.com" \
      -ext "SAN=dns:api.example.com,ip:10.0.0.5" -keystore server.p12 -storepass changeit

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen