컬 SSLV3 경고 핸드셰이크 실패를 수정하는 방법은 무엇입니까?

컬 SSLV3 경고 핸드셰이크 실패를 수정하는 방법은 무엇입니까?

다음을 통해 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/를 사용 하거나 my에 --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 

답변1

일부 사이트에서는 SSL 3.0 지원을 비활성화하므로(아마도 여러 가지 취약점으로 인해) -2/ --sslv2또는 / 를 통해 -3특정 SSL 버전을 강제로 적용할 수 있습니다 --sslv3. 요청한 페이지가 다른 위치로 이동되었는지 -L확인해 보는 것도 좋습니다 .

내 경우에는 이것이 curl버그였습니다(OpenSSL에서 발견됨)이므로 curl최신 버전(>7.40)으로 업그레이드해야 제대로 작동합니다.

또한보십시오:

답변2

Mavericks부터 Apple은 TLS/SSL 엔진을 OpenSSL에서 Apple의 분산 cURL 바이너리에 있는 자체 보안 전송 엔진으로 전환하여 클라이언트 인증서 사용을 중단했습니다. homebrew의 cURL 바이너리 사용:

brew install curl
brew link curl --force

답변3

잘못된 호스트 헤더를 보냈을 때 이 오류가 발생했습니다.

에이전트를 개발 중입니다.http://127.0.0.1:12345도착하다https://site.com:443. 따라서 브라우저에서 요청 헤더를 있는 그대로 보내고 있으며 호스트:127.0.0.1:12345 헤더가 있습니다. 문제를 해결하기 위해 브라우저에서 호스트 헤더를 제거했습니다.

관련 정보