Command-Line
如何修復 curl sslv3 警報握手失敗?
我正在嘗試通過以下方式捲曲 HTTPS 網站:
$ curl -v https://thepiratebay.se/
但是它失敗並出現錯誤:
* About to connect() to thepiratebay.se port 443 (#0) * Trying 173.245.61.146... * connected * Connected to thepiratebay.se (173.245.61.146) port 443 (#0) * SSLv3, TLS handshake, Client hello (1): * SSLv3, TLS alert, Server hello (2): * error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure * Closing connection #0 curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
使用
-k
/--insecure
或添加insecure
到 my~/.curlrc
沒有任何區別。如何使用
curl
命令行忽略或強制證書?使用時
wget
似乎工作正常。也適用openssl
於以下測試:$ openssl s_client -connect thepiratebay.se:443 CONNECTED(00000003) SSL handshake has read 2651 bytes and written 456 bytes New, TLSv1/SSLv3, Cipher is AES128-SHA Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1 Cipher : AES128-SHA
我有:
$ curl --version curl 7.28.1 (x86_64-apple-darwin10.8.0) libcurl/7.28.1 OpenSSL/0.9.8| zlib/1.2.5 libidn/1.17 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp Features: IDN IPv6 Largefile NTLM NTLM_WB SSL libz
一些站點禁用了對 SSL 3.0 的支持(可能是由於許多漏洞利用/漏洞),因此可以通過
-2
/--sslv2
或-3
/強制特定的 SSL 版本--sslv3
。-L
如果請求的頁面已移動到其他位置,也值得一試。就我而言,這是一個
curl
錯誤(在 OpenSSL 中發現),因此curl
需要升級到最新版本(> 7.40)並且執行良好。也可以看看: