Zum Inhalt springen
ecdsa.com
Go crypto/tls clientGo

Fehlermeldung

tls: server selected unsupported protocol version 301

Die Zahl ist der Versionscode in Hexadezimalschreibweise ohne das Präfix 0x: 300 = SSL 3.0, 301 = TLS 1.0, 302 = TLS 1.1. HTTP-Clients stellen „Get \"https://…\": “ voran. Ein Server, der nur TLS 1.0 kann und auf einer aktuellen Bibliothek aufbaut, lehnt ab, statt auf eine ältere Version herunterzustufen, und Go meldet dann „remote error: tls: protocol version not supported“ (beobachtet mit openssl s_server -tls1 als Gegenstelle).

Go crypto/tls client — the server chose TLS 1.0 (0x0301) or 1.1 (0x0302), below Go's minimum

Was der Fehler bedeutet

Der Server hat das ClientHello von Go beantwortet, indem er eine TLS-Version gewählt hat, die der Go-Client nicht zulässt: 301 ist der hexadezimale Versionscode von TLS 1.0, 302 der von TLS 1.1. Go-Clients verlangen standardmäßig TLS 1.2 oder neuer (seit Go 1.18), deshalb brechen sie den Handshake ab. Der Server muss TLS 1.2+ unterstützen.

Warum der Fehler auftritt

So behebst du den Fehler

  1. 1.

    TLS des Servers aktualisieren

    Aktiviere TLS 1.2 (und 1.3) auf dem Server oder setze einen modernen TLS-Terminator davor.

    text
    Upgrade the server (or the appliance firmware / TLS terminator in front of it) to TLS 1.2 or 1.3.
    0x0301 = TLS 1.0, 0x0302 = TLS 1.1, 0x0303 = TLS 1.2, 0x0304 = TLS 1.3.
  2. 2.

    Letzter Ausweg: ein eigener Client mit MinVersion TLS 1.0

    Senkst du MinVersion in einem Client, der nur für dieses Altgerät verwendet wird, funktioniert die Verbindung wieder. TLS 1.0 ist abgekündigt (RFC 8996) und bietet keine modernen Schutzmechanismen; halte solchen Verkehr in vertrauenswürdigen Netzen und setze diese Einstellung nie auf gemeinsam genutzten Transports.

    go
    // Last resort for one legacy device on a trusted network: a dedicated client
    legacy := &http.Client{Transport: &http.Transport{TLSClientConfig: &tls.Config{
    	MinVersion: tls.VersionTLS10, // only for this client; never in a shared transport
    }}}
    resp, err := legacy.Get("https://legacy.example.com:8443/")

Verwandte Fehler

Gesamte Signaturfehler-Datenbank durchsuchen