cURL Error 35: SSL Connect ErrorWhat cURL Error 35 Actually Means
Error 35 is CURLE_SSL_CONNECT_ERROR: the TCP connection succeeded, curl began the TLS handshake, and the negotiation broke before a secure channel existed. The far end sent a fatal alert, reset the connection, or replied with bytes that are not TLS at all. It is distinct from error 60 (certificate verification failed — the handshake got further) and error 28 (nothing answered in time).
Failures cluster into three families. Protocol mismatch: your curl offers TLS versions or ciphers the server will not accept — typical with an outdated OpenSSL build, or with legacy flags like --tlsv1.0 or a hand-rolled --ciphers list forced in an old script. Wrong protocol on the wire: https:// pointed at a plaintext port, or a proxy hop wrongly wrapped in TLS — the plaintext reply cannot parse as a ServerHello, producing OpenSSL's famous "wrong version number". And interference: middleboxes, TLS inspection, or a target that resets handshakes from IP ranges it distrusts.
The wrapped detail narrows it fast: "wrong version number" means plaintext answered; "alert handshake failure" means negotiation was rejected; a bare connection reset during the handshake usually means something dropped you deliberately.