curl 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 암호를 싫어하므로 "-암호 RC4"를 사용하여 구체적으로 허용했습니다
maxpolk

@SimonEast 어떤 버전에서 어떤 버전으로 ugprade 했습니까?
Olle Härstedt

5

Mavericks부터 Apple은 TLS / SSL 엔진을 OpenSSL에서 Apple 분산 cURL 바이너리의 자체 보안 전송 엔진으로 전환하여 클라이언트 인증서 사용을 중단했습니다. homebrew의 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:443 까지 프록시를 개발하고있었습니다 . 그래서 브라우저에서 온 그대로 요청 헤더를 보내고 있었고 호스트 : 127.0.0.1:12345 헤더가있었습니다. 브라우저에서 제공된 호스트 헤더를 삭제하여 문제를 해결했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.