Fehlermeldung
SSL routines:ssl3_read_bytes:tlsv1 alert protocol version
Auch ausgegeben als
- error:0A00042E:SSL routines::tlsv1 alert protocol version
- SSL alert number 70
OpenSSL 3.0 und 3.5 geben beide „error:0A00042E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version:<source>:SSL alert number 70“ aus; OpenSSL 1.1.1 verwendete den Code 1409442E. Clients auf OpenSSL-Basis (curl, Python, Ruby, PHP) zeigen denselben Text als Grund.
OpenSSL (client side) — TLS alert 70 (protocol_version) received from the server
Was der Fehler bedeutet
Der Client hat vom Server den TLS-Alert 70 (protocol_version) erhalten: Keine der Protokollversionen, die der Client angeboten hat, ist für den Server akzeptabel. „tlsv1“ ist nur die Sammelbezeichnung, die OpenSSL für die seit TLS 1.0 definierten Alerts verwendet. In der Praxis ist der Server auf TLS 1.0/1.1 beschränkt, während der Client 1.2 und 1.3 anbietet, oder der Client wurde auf Versionen beschränkt, die der Server deaktiviert hat.
Warum der Fehler auftritt
Der Server unterstützt nur TLS 1.0 oder 1.1
häufigVeraltete Appliances, alte Server mit Windows/IIS oder Java und Geräte, die nie aktualisiert wurden.
Dem Client wurde eine alte Version vorgegeben
gelegentlichFlags wie -tls1 oder eine in einer Konfiguration zurückgebliebene Einstellung MaxProtocol bringen den Client dazu, Versionen anzubieten, die von aktuellen Servern abgelehnt werden.
Ein Server nur für TLS 1.3 und ein auf 1.2 beschränkter Client
gelegentlichGehärtete Endpunkte akzeptieren manchmal nur TLS 1.3; alte Clients können sich nicht verbinden.
So behebst du den Fehler
- 1.
Vom Server akzeptierte Versionen ermitteln
Probiere jede Version explizit aus (Sicherheitsniveau 0 erlaubt die auf SHA-1 basierenden Handshakes von TLS 1.0/1.1 nur für diesen 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.
TLS 1.2 und 1.3 auf dem Server aktivieren
Aktualisiere die Protokolleinstellungen des Servers (und seine TLS-Bibliothek, falls sie älter als TLS 1.2 ist).
text # nginx ssl_protocols TLSv1.2 TLSv1.3; # Apache httpd SSLProtocol -all +TLSv1.2 +TLSv1.3