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
Le serveur ne prend en charge que TLS 1.0 ou 1.1
fréquenteDes équipements d’ancienne génération, de vieux serveurs Windows/IIS ou Java, et des appareils jamais mis à jour.
Le client a été configuré pour utiliser une ancienne version
occasionnelleDes options comme -tls1 ou un paramètre MaxProtocol oublié dans une configuration amènent le client à proposer des versions que les serveurs actuels refusent.
Un serveur exclusivement TLS 1.3 face à un client limité à 1.2
occasionnelleLes points de terminaison durcis n’acceptent parfois que TLS 1.3 ; les anciens clients ne peuvent pas s’y connecter.
Comment corriger l’erreur
- 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.
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