Como corrigir falha de handshake de alerta curl sslv3?

25

Estou tentando encurtar o site HTTPS da seguinte maneira:

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

No entanto, falha com o erro:

* 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 / --insecure ou adicionar insecure ao meu ~/.curlrc não faz diferença.

Como ignorar ou forçar o certificado usando a linha de comando curl ?

Quando usar wget parece funcionar bem. Também funciona ao testar com openssl conforme abaixo:

$ 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

Eu:

$ 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 
    
por kenorb 27.03.2015 / 18:53

3 respostas

17

Alguns sites desabilitam o suporte para o SSL 3.0 (possivelmente devido a muitas explorações / vulnerabilidades), portanto, é possível forçar uma versão específica do SSL por -2 / --sslv2 ou -3 / --sslv3 . Também -L vale a pena tentar se a página solicitada for movida para um local diferente.

No meu caso, foi um erro curl ( encontrado no OpenSSL ) , então curl precisou ser atualizado para a versão mais recente (> 7.40) e funcionou bem.

Veja também:

por 27.03.2015 / 19:22
4

A partir do Mavericks, a Apple mudou o mecanismo TLS / SSL do OpenSSL para o seu próprio mecanismo de Transporte Seguro no binário cURL distribuído da Apple, que quebra o uso do certificado de cliente. Use o binário cURL do homebrew:

brew install curl
brew link curl --force
    
por 27.03.2015 / 19:47
1

Eu tive esse erro quando estava enviando um cabeçalho de host errado.

Eu estava desenvolvendo um proxy do link para link . então eu estava enviando cabeçalhos de solicitação como estão no navegador e havia host: 127.0.0.1: 12345 header. Eu apaguei o cabeçalho do host que veio do navegador para resolver o problema.

    
por 28.04.2018 / 21:00