Zum Inhalt springen
ecdsa.com
Java (JSSE)Java

Fehlermeldung

javax.net.ssl.SSLHandshakeException: (unrecognized_name) Received fatal alert: unrecognized_name

Auch ausgegeben als

  • Received fatal alert: unrecognized_name

JDK 25 meldet „(unrecognized_name) Received fatal alert: unrecognized_name“. Java 7 und frühe Releases von Java 8 brachen auch dann ab, wenn ein Server diesen Alert nur als Warnung sendete – ein Klassiker bei Konfigurationen von Apache httpd ohne passenden ServerName.

Java (JSSE) — TLS alert 112 from a server that does not serve the requested SNI name

Was der Fehler bedeutet

Die JVM hat den Hostnamen aus der URL als SNI gesendet, und der Server hat mit dem TLS-Alert 112 (unrecognized_name) als fatalem Alert geantwortet, weil für diesen Namen keine Website konfiguriert ist. Java behandelt den Alert als fatal und bricht ab. Der Server ist erreichbar; er erkennt nur den Namen nicht, den du verwendet hast.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Namen ermitteln, die der Server akzeptiert

    Probiere den Handshake mit infrage kommenden Namen über openssl s_client -servername aus.

    bash
    # Which SNI names does the server accept?
    for n in api.example.com www.example.com; do
      printf '%-18s ' "$n"
      echo | openssl s_client -connect api.example.com:443 -servername "$n" -brief 2>&1 | grep -m1 -E 'Protocol version|alert' || echo fail
    done
  2. 2.

    Namen auf dem Server hinzufügen

    Konfiguriere ServerName oder ServerAlias (oder das Gegenstück in nginx, im CDN oder auf der Plattform) zusammen mit einem Zertifikat, das den Namen abdeckt.

    text
    # Apache httpd: every name clients use must be a ServerName or ServerAlias of a TLS vhost
    <VirtualHost *:443>
        ServerName  api.example.com
        ServerAlias api-legacy.example.com
        SSLEngine on
    </VirtualHost>
  3. 3.

    Konfigurierten Hostnamen verwenden

    Korrigiere lieber die URL, statt SNI global abzuschalten.

    text
    Use the server's configured host name in the URL. Turning SNI off with
    -Djsse.enableSNIExtension=false only works if the server's default site is the one you need,
    and it breaks every server that relies on SNI; avoid it.

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen