¿Cómo reparar el fallo curl sslv3 alerta apretón de manos?


27

Estoy tratando de curlizar el sitio web HTTPS de la siguiente manera:

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

Sin embargo, falla con el error:

* 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

Usar -k/ --insecureo agregar insecurea mi ~/.curlrcno hace ninguna diferencia.

¿Cómo ignoro o fuerzo el certificado usando la curllínea de comando?


Cuando se usa wgetparece funcionar bien. También funciona cuando se prueba con openssllo siguiente:

$ 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

He:

$ 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 

Respuestas:


20

Algunos sitios deshabilitan la compatibilidad con SSL 3.0 (posible debido a muchas vulnerabilidades / vulnerabilidades), por lo que es posible forzar una versión específica de SSL mediante -2/ --sslv2o -3/ --sslv3. También -Lvale la pena intentarlo si la página solicitada se ha movido a una ubicación diferente.

En mi caso, era un curlerror ( encontrado en OpenSSL ), por lo que curlnecesitaba actualizarse a la última versión (> 7.40) y funcionó bien.

Ver también:


Sí, actualizar curl solucionó el problema para mí. Gracias.
— Simon East

El último rizo no le gusta el cifrado anticuado RC4 que los servidores antiguos todavía podrían usar, así que terminé usando "--ciphers RC4" para permitirlo específicamente
— maxpolk

@SimonEast ¿De qué versión a qué versión te pasaste?
— Olle Härstedt

5

Comenzando con Mavericks, Apple cambió el motor TLS / SSL de OpenSSL a su propio motor de transporte seguro en binario cURL distribuido por Apple que interrumpe el uso del certificado del cliente. Utilice el binario cURL de homebrew:

brew install curl
brew link curl --force

1
brew link curl --forceya no funciona, debes poner export "$(brew --prefix curl)/bin:$PATH"tu .bash_profile en su lugar.
— Lars Nyström

1

Tuve este error cuando estaba enviando un encabezado de host incorrecto.

Estaba desarrollando un proxy de http://127.0.0.1:12345 a https://site.com:443 . así que estaba enviando encabezados de solicitud tal como estaban desde el navegador y había host: 127.0.0.1: encabezado 12345. Eliminé el encabezado del host que vino del navegador para resolver el problema.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.