Bagaimana cara memperbaiki kegagalan handshake alert curl sslv3?


27

Saya mencoba meringkuk situs web HTTPS dengan cara berikut:

$ curl -v https://thepiratebay.se/

Namun gagal dengan kesalahan:

* 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

Menggunakan -k/ --insecureatau menambah insecureke saya ~/.curlrctidak ada bedanya.

Bagaimana cara saya mengabaikan atau memaksa sertifikat menggunakan curlbaris perintah?


Saat menggunakan wgettampaknya berfungsi dengan baik. Juga berfungsi saat pengujian dengan opensslseperti di bawah ini:

$ 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

Saya sudah:

$ 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 

Jawaban:


20

Beberapa situs menonaktifkan dukungan untuk SSL 3.0 (mungkin karena banyak eksploitasi / kerentanan), jadi mungkin untuk memaksa versi SSL tertentu dengan -2/ --sslv2atau -3/ --sslv3. Juga -Lpatut dicoba jika halaman yang diminta telah pindah ke lokasi yang berbeda.

Dalam kasus saya itu adalah curlbug ( ditemukan di OpenSSL ), jadi curlperlu ditingkatkan ke versi terbaru (> 7.40) dan itu berfungsi dengan baik.

Lihat juga:


Ya, meningkatkan ikal memperbaiki masalah bagi saya. Terima kasih.
Simon East

Curl terbaru tidak suka RC4 cipher usang bahwa server lama mungkin masih menggunakan, jadi saya akhirnya menggunakan "--ciphers RC4" untuk secara khusus mengizinkannya
maxpolk

@SimonEast Dari versi mana ke versi mana Anda ugprade?
Olle Härstedt

5

Dimulai dengan Mavericks, Apple mengganti mesin TLS / SSL dari OpenSSL ke mesin Secure Transport mereka sendiri di Apple yang mendistribusikan biner CURL yang merusak penggunaan sertifikat klien. Gunakan biner CURL dari homebrew:

brew install curl
brew link curl --force

1
brew link curl --forcetidak lagi berfungsi, Anda harus memasukkan export "$(brew --prefix curl)/bin:$PATH".bash_profile sebagai gantinya.
Lars Nyström

1

Saya memiliki kesalahan ini ketika saya mengirim header host yang salah.

Saya sedang mengembangkan proxy dari http://127.0.0.1:12345 ke https://site.com:443 . jadi saya mengirim header permintaan apa adanya seperti yang datang dari browser dan ada host: 127.0.0.1: 12345 header. Saya menghapus header host yang berasal dari browser untuk menyelesaikan masalah.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.