Aller au contenu
ecdsa.com
OpenSSL (client side)CLI OpenSSL

Message d’erreur

SSL routines:ssl3_read_bytes:tlsv1 alert protocol version

Également affiché sous la forme

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

OpenSSL 3.0 et 3.5 affichent tous deux « error:0A00042E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version:<source>:SSL alert number 70 » ; OpenSSL 1.1.1 utilisait le code 1409442E. Les clients construits sur OpenSSL (curl, Python, Ruby, PHP) affichent le même texte de raison.

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

Ce que cela signifie

Le client a reçu du serveur l’alerte TLS 70 (protocol_version) : aucune des versions du protocole proposées par le client n’est acceptable pour le serveur. Le préfixe « tlsv1 » n’est que le nom de famille qu’OpenSSL donne aux alertes définies depuis TLS 1.0. En pratique, le serveur est limité à TLS 1.0/1.1 alors que le client propose 1.2 et 1.3, ou bien le client a été restreint à des versions que le serveur a désactivées.

Pourquoi cela se produit

Comment corriger l’erreur

  1. 1.

    Trouver les versions acceptées par le serveur

    Essayez chaque version explicitement (le niveau de sécurité 0 autorise les handshakes de TLS 1.0/1.1 fondés sur SHA-1, pour ce seul test).

    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.

    Activer TLS 1.2 et 1.3 sur le serveur

    Mettez à jour les paramètres de protocole du serveur (et sa bibliothèque TLS si elle est antérieure à TLS 1.2).

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

Erreurs associées

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