Pular para o conteúdo
ecdsa.com
OpenSSL (client side)CLI do OpenSSL

Mensagem de erro

SSL routines:ssl3_read_bytes:tlsv1 alert protocol version

Também aparece como

  • error:0A00042E:SSL routines::tlsv1 alert protocol version
  • SSL alert number 70

O OpenSSL 3.0 e o 3.5 imprimem “error:0A00042E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version:<source>:SSL alert number 70”; o OpenSSL 1.1.1 usava o código 1409442E. Clientes baseados no OpenSSL (curl, Python, Ruby, PHP) mostram o mesmo texto de motivo.

OpenSSL (client side) — TLS alert 70 (protocol_version) received from the server

O que significa

O cliente recebeu do servidor o alerta TLS 70 (protocol_version): nenhuma das versões do protocolo que o cliente ofereceu é aceitável para o servidor. O prefixo “tlsv1” é só o nome de família que o OpenSSL usa para os alertas definidos desde o TLS 1.0. Na prática, o servidor está limitado ao TLS 1.0/1.1 enquanto o cliente oferece 1.2 e 1.3, ou o cliente foi restrito a versões que o servidor desativou.

Por que acontece

Como corrigir

  1. 1.

    Descobrir quais versões o servidor aceita

    Teste cada versão explicitamente (o nível de segurança 0 permite os handshakes do TLS 1.0/1.1 baseados em SHA-1, só para este teste).

    bash
    for v in tls1 tls1_1 tls1_2 tls1_3; do
      printf '%-7s ' "$v"
      echo | openssl s_client -connect legacy.example.com:443 -servername legacy.example.com -"$v" \
        -cipher 'DEFAULT:@SECLEVEL=0' >/dev/null 2>&1 && echo accepted || echo refused
    done
  2. 2.

    Ativar TLS 1.2 e 1.3 no servidor

    Atualize as configurações de protocolo do servidor (e a biblioteca TLS dele, se ela for anterior ao TLS 1.2).

    text
    # nginx
    ssl_protocols TLSv1.2 TLSv1.3;
    # Apache httpd
    SSLProtocol -all +TLSv1.2 +TLSv1.3

Erros relacionados

Ver toda a base de erros de assinatura