wrong version number
TLS spoken to something that isn't TLS
Seen in OpenSSL, curl (error 35), Python ssl
The client started a TLS handshake and got back something that was not TLS, usually plain HTTP.
Common causes
- Using https:// on a port that serves plain HTTP (often 80 or 8080).
- Using implicit TLS (465) settings on a STARTTLS port (587), or the reverse.
- A proxy configured with the wrong scheme.
How to fix it
- Use http:// for plain ports or point to the TLS port.
- For SMTP use port 465 with implicit TLS or 587 with STARTTLS, matching your client setting.
- Check HTTPS_PROXY uses http:// unless the proxy itself speaks TLS.
Got a different message? Paste it into the error explainer.
Related errors
- curl: (7) Failed to connect · The connection was refused or unreachable
- curl: (52) Empty reply from server · The server closed the connection without replying
- Error: socket hang up · The server closed the connection before replying
- UND_ERR_CONNECT_TIMEOUT · fetch couldn't open a connection in time
- 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: (6) Could not resolve host · The hostname doesn't resolve
- curl: (28) Operation timed out · The request timed out
- curl: (51) SSL: no alternative certificate subject name matches target host name · The certificate doesn't match the hostname
- curl: (3) URL using bad/illegal format or missing URL · curl could not parse the URL