Aller au contenu
ecdsa.com
Go crypto/tls clientGo

Message d’erreur

tls: server selected unsupported protocol version 301

Le nombre est le code de version en hexadécimal, sans le préfixe 0x : 300 = SSL 3.0, 301 = TLS 1.0, 302 = TLS 1.1. Les clients HTTP ajoutent le préfixe « Get \"https://…\": ». Un serveur limité à TLS 1.0 et reposant sur une bibliothèque actuelle refuse au lieu de se replier sur une version inférieure, et Go signale alors « remote error: tls: protocol version not supported » (observé face à openssl s_server -tls1).

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

Ce que cela signifie

Le serveur a répondu au ClientHello de Go en choisissant une version de TLS que le client Go n’autorise pas : 301 est le code de version hexadécimal de TLS 1.0, 302 celui de TLS 1.1. Par défaut (depuis Go 1.18), les clients Go exigent TLS 1.2 ou une version plus récente : ils interrompent donc le handshake. Le serveur doit prendre en charge TLS 1.2 ou une version ultérieure.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Mettre à niveau le TLS du serveur

    Activez TLS 1.2 (et 1.3) sur le serveur, ou placez devant lui un proxy de terminaison TLS moderne.

    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.

    En dernier recours : un client dédié avec MinVersion TLS 1.0

    Abaisser MinVersion dans un client utilisé uniquement pour cet appareil ancien rétablit la connectivité. TLS 1.0 est déclaré obsolète (RFC 8996) et dépourvu des protections modernes ; cantonnez ce trafic à des réseaux de confiance et n’appliquez jamais ce réglage à des transports partagés.

    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/")

Erreurs associées

Parcourir toute la base de données des erreurs de signature