tlsv1 alert protocol version
The peer does not accept this TLS version
Seen in OpenSSL, curl, Python ssl, PHP, nginx and Postfix logs (SSL alert number 70)
The other side sent a protocol_version alert (alert 70) because it refuses the TLS version this client offered.
Common causes
- An old client offering only TLS 1.0 or 1.1 to a server that requires TLS 1.2 or newer.
- A client pinned to one version (for example --tlsv1.3 or a hard-coded SSLContext) that the server does not support.
- Seen in server logs: an outdated client or scanner tried an old TLS version and was refused.
How to fix it
- Update the client OpenSSL, runtime or OS so it can negotiate TLS 1.2 or 1.3.
- Remove hard-coded protocol versions from client code and config.
- Check which TLS versions the server supports and keep TLS 1.2 and 1.3 enabled.
Got a different message? Paste it into the error explainer.
Related errors
- unable to get local issuer certificate · The client can't find the certificate's issuer
- unable to verify the first certificate · The intermediate certificate is missing
- certificate has expired · The server certificate has expired
- self signed certificate in certificate chain · The chain ends in an untrusted root
- curl: (51) SSL: no alternative certificate subject name matches target host name · The certificate doesn't match the hostname
- curl: (35) SSL connect error · The TLS handshake failed
- sslv3 alert handshake failure · The server rejected the TLS handshake
- tlsv1 alert unknown ca · The peer doesn't trust the certificate's CA
- no peer certificate available · The handshake failed before a certificate arrived
- Unable to establish SSL connection. · wget could not complete the TLS handshake
- ERROR: cannot verify example.com's certificate · wget doesn't trust the server's certificate
- Error [ERR_TLS_CERT_ALTNAME_INVALID]: Hostname/IP does not match certificate's altnames · The certificate doesn't cover this hostname