Come risolvere curl sslv3 avviso di errore di stretta di mano?


27

Sto cercando di arricciare il sito Web HTTPS nel modo seguente:

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

Tuttavia non riesce con l'errore:

* 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

Usare -k/ --insecureo aggiungere insecurea my ~/.curlrcnon fa alcuna differenza.

Come posso ignorare o forzare il certificato utilizzando la curlriga di comando?


Quando si utilizza wgetsembra funzionare bene. Funziona anche quando si esegue il test opensslcome di seguito:

$ 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

Io ho:

$ 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 

Risposte:


20

Alcuni siti disabilitano il supporto per SSL 3.0 (possibile a causa di molti exploit / vulnerabilità), quindi è possibile forzare una specifica versione SSL con -2/ --sslv2o -3/ --sslv3. -LVale anche la pena provare se la pagina richiesta è stata spostata in un'altra posizione.

Nel mio caso si trattava di un curlbug ( trovato in OpenSSL ), quindi curldoveva essere aggiornato all'ultima versione (> 7.40) e funzionava bene.

Guarda anche:


Sì, l'aggiornamento del ricciolo ha risolto il problema per me. Grazie.
Simon East,

All'ultimo curl non piace la cifra RC4 obsoleta che i vecchi server potrebbero ancora utilizzare, quindi ho finito per usare "--ciphers RC4" per permetterlo specificamente
maxpolk

@SimonEast Da quale versione a quale versione hai ugprade?
Olle Härstedt

5

A partire da Mavericks, Apple ha passato il motore TLS / SSL da OpenSSL al proprio motore di trasporto sicuro nel binario cURL distribuito Apple che interrompe l'utilizzo del certificato client. Usa il binario cURL di homebrew:

brew install curl
brew link curl --force

1
brew link curl --forcenon funziona più, devi invece inserire il export "$(brew --prefix curl)/bin:$PATH"tuo .bash_profile.
Lars Nyström

1

Ho riscontrato questo errore durante l'invio di un'intestazione host errata.

Stavo sviluppando un proxy da http://127.0.0.1:12345 a https://site.com:443 . quindi stavo inviando le intestazioni delle richieste così come sono arrivate dal browser e c'era l'host: 127.0.0.1: 12345 header. Ho eliminato l'intestazione host proveniente dal browser per risolvere il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.