Як виправити завиток несправності рукостискання sslv3?


27

Я намагаюся згортати веб-сайт 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до мого ~/.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 

Відповіді:


20

Деякі сайти відключають підтримку SSL 3.0 (можливо через багато подвигів / вразливих місць), тому можливо застосувати конкретну версію SSL будь-яким -2/ --sslv2або -3/ --sslv3. Також -Lварто спробувати, якщо запитувана сторінка була перенесена в інше місце.

У моєму випадку це була curlпомилка ( знайдена в OpenSSL ), тому її curlпотрібно було оновити до останньої версії (> 7.40), і вона спрацювала нормально.

Дивись також:


Так, оновлення curl вирішило проблему для мене. Спасибі.
Simon East

Останнє згортання не любить застарілий шифр RC4, який старі сервери все ще можуть використовувати, тому я в кінцевому підсумку використовував "--ciphers RC4", щоб спеціально дозволити це
maxpolk

@SimonEast З якої версії, до якої версії ви попрацювали?
Olle Härstedt

5

Починаючи з Mavericks, Apple переключила двигун TLS / SSL з OpenSSL на власний двигун безпечного транспорту в Apple, що розповсюджує двійковий код CURL, який порушує використання клієнтських сертифікатів. Використовуйте бінарний текст CURL від домашньої мови:

brew install curl
brew link curl --force

1
brew link curl --forceбільше не працює, export "$(brew --prefix curl)/bin:$PATH"замість цього потрібно ввести .bash_profile.
Lars Nyström

1

У мене виникла помилка, коли я надсилав неправильний заголовок хоста.

Я розробляв проксі-сервер від http://127.0.0.1.12345 до https://site.com:243 . тому я надсилав заголовки запитів як є, як це прийшло з браузера, і там був заголовок хоста: 127.0.0.1: 12345. Щоб вирішити проблему, я видалив заголовок хоста, який прийшов із браузера.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.