Pular para o conteúdo
ecdsa.com
Go crypto/tls clientGo

Mensagem de erro

tls: server selected unsupported protocol version 301

O número é o código da versão em hexadecimal, sem o prefixo 0x: 300 = SSL 3.0, 301 = TLS 1.0, 302 = TLS 1.1. Clientes HTTP acrescentam o prefixo “Get \"https://…\": ”. Um servidor só com TLS 1.0 construído sobre uma biblioteca atual recusa a conexão em vez de negociar uma versão inferior, e o Go então informa “remote error: tls: protocol version not supported” (observado com openssl s_server -tls1).

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

O que significa

O servidor respondeu ao ClientHello do Go escolhendo uma versão de TLS que o cliente do Go não permite: 301 é o código hexadecimal da versão do TLS 1.0, e 302, do TLS 1.1. Por padrão (desde o Go 1.18), clientes Go exigem TLS 1.2 ou mais recente, então abortam o handshake. O servidor precisa oferecer suporte a TLS 1.2+.

Por que acontece

Como corrigir

  1. 1.

    Atualizar o TLS do servidor

    Ative TLS 1.2 (e 1.3) no servidor ou coloque na frente dele um terminador TLS moderno.

    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.

    Último recurso: um cliente dedicado com MinVersion TLS 1.0

    Reduzir o MinVersion em um cliente usado apenas para esse dispositivo legado restabelece a conectividade. O TLS 1.0 está obsoleto (RFC 8996) e não tem as proteções modernas; mantenha esse tráfego em redes confiáveis e nunca aplique esse ajuste a transportes compartilhados.

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

Erros relacionados

Ver toda a base de erros de assinatura