Zum Inhalt springen
ecdsa.com
curl (OpenSSL backend)curl

Fehlermeldung

curl: (35) TLS connect error: error:0A00042E:SSL routines::tlsv1 alert protocol version

Auch ausgegeben als

  • curl: (35) error:0A00042E:SSL routines::tlsv1 alert protocol version
  • curl: (35) error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version

Neuere curl-Releases stellen dem OpenSSL-Grund „TLS connect error: “ voran. OpenSSL 1.1.1 nennt zusätzlich die Funktion: „error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version“. Wählt der Server dagegen eine Version, die der Client ablehnt, meldet der Client „unsupported protocol“.

curl (OpenSSL backend) — CURLE_SSL_CONNECT_ERROR, TLS alert 70 (protocol_version) received from the server

Was der Fehler bedeutet

Der Server hat den TLS-Alert 70 (protocol_version) gesendet: Keine der TLS-Versionen, die curl angeboten hat, ist für ihn akzeptabel. Das Präfix „tlsv1“ ist nur der Name, den OpenSSL den seit TLS 1.0 definierten Alerts gibt, nicht die verwendete Version. Meist hängt der Server auf TLS 1.0/1.1 fest, während der Client 1.2 und 1.3 anbietet, oder die Höchstversion eines Clients wurde unter das Minimum des Servers begrenzt.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    Vom Server akzeptierte Versionen ermitteln

    Probiere jede Version mit openssl s_client aus. Das Ergebnis zeigt dir, ob du den Server korrigieren musst (nur tls1/tls1_1 akzeptiert) oder den Client (er hat die akzeptierte Version nie angeboten).

    bash
    for v in tls1 tls1_1 tls1_2 tls1_3; do
      printf '%s: ' "$v"
      openssl s_client -connect api.example.com:443 -servername api.example.com -"$v" </dev/null >/dev/null 2>&1 \
        && echo accepted || echo refused
    done
  2. 2.

    TLS 1.2 und 1.3 auf dem Server aktivieren

    Aktualisiere die TLS-Konfiguration (und falls nötig die TLS-Bibliothek oder das Betriebssystem), damit der Server TLS 1.2 und 1.3 akzeptiert.

    text
    # nginx
    ssl_protocols TLSv1.2 TLSv1.3;
    # HAProxy (global section)
    ssl-default-bind-options ssl-min-ver TLSv1.2
  3. 3.

    Versionsgrenzen auf dem Client entfernen

    Entferne --tls-max und alte Protokoll-Flags aus Skripten und .curlrc; lege nur ein Minimum fest, damit curl die höchste Version aushandeln kann, die beide Seiten unterstützen.

    bash
    grep -nE 'tls-max|tlsv1|sslv3' ~/.curlrc   # a forgotten cap in the config file
    curl --tlsv1.2 https://api.example.com/        # minimum 1.2, no maximum

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen