Saltar al contenido
ecdsa.com
OpenSSL (client side)CLI de OpenSSL

Mensaje de error

SSL routines:ssl3_read_bytes:tlsv1 alert protocol version

También se muestra como

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

Tanto OpenSSL 3.0 como 3.5 imprimen «error:0A00042E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version:<source>:SSL alert number 70»; OpenSSL 1.1.1 usaba el código 1409442E. Los clientes basados en OpenSSL (curl, Python, Ruby, PHP) muestran el mismo texto del motivo.

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

Qué significa

El cliente recibió del servidor la alerta TLS 70 (protocol_version): ninguna de las versiones de protocolo que ofreció el cliente es aceptable para el servidor. «tlsv1» es solo el nombre de familia que OpenSSL usa para las alertas definidas desde TLS 1.0. En la práctica, el servidor está limitado a TLS 1.0/1.1 mientras el cliente ofrece 1.2 y 1.3, o el cliente se restringió a versiones que el servidor tiene desactivadas.

Por qué ocurre

Cómo solucionarlo

  1. 1.

    Encontrar las versiones que acepta el servidor

    Prueba cada versión explícitamente (el nivel de seguridad 0 permite los handshakes basados en SHA-1 de TLS 1.0/1.1 solo para esta prueba).

    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.

    Habilitar TLS 1.2 y 1.3 en el servidor

    Actualiza la configuración de protocolos del servidor (y su biblioteca TLS si es anterior a TLS 1.2).

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

Errores relacionados

Explorar toda la base de datos de errores de firma