कर्ल 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

कुछ साइटों एसएसएल 3.0 के लिए अक्षम समर्थन (संभव है क्योंकि कई कारनामे / कमजोरियों का), यह तो या तो द्वारा विशिष्ट एसएसएल संस्करण के लिए मजबूर किया जा सकता है -2/ --sslv2या -3/ --sslv3। यह भी -Lएक कोशिश के लायक है अगर अनुरोधित पृष्ठ एक अलग स्थान पर चला गया है।

मेरे मामले में यह एक curlबग ( ओपनएसएसएल में पाया गया ) था, इसलिए curlइसे नवीनतम संस्करण (> 7.40) में अपग्रेड करने की आवश्यकता थी और इसने ठीक काम किया।

यह भी देखें:


हां, कर्ल को अपग्रेड करना मेरे लिए समस्या तय है। धन्यवाद।
साइमन ईस्ट

नवीनतम कर्ल नापसंद पुरानी RC4 सिफर पुराने सर्वर अभी भी उपयोग कर सकते हैं, इसलिए मैंने विशेष रूप से इसे अनुमति देने के लिए "--cipers RC4" का उपयोग करके समाप्त किया
अधिकतम

@SimonEast किस संस्करण से किस संस्करण में आपने कुरूप किया था?
ओले हेर्स्टेडट

5

मावेरिक्स के साथ शुरू करते हुए, Apple ने ओपनएसएसएल से टीएलएस / एसएसएल इंजन को अपने स्वयं के सिक्योर ट्रांसपोर्ट इंजन में बदल दिया, जो कि एप्पल द्वारा वितरित सर्कुलर बाइनरी में वितरित किया गया, जो क्लाइंट सर्टिफिकेट के उपयोग को तोड़ता है। होमब्रे से CURL बाइनरी का उपयोग करें:

brew install curl
brew link curl --force

1
brew link curl --forceअब काम नहीं करता है, आपको export "$(brew --prefix curl)/bin:$PATH"इसके बजाय अपने .bash_profile में रखना होगा ।
लार्स Nyström

1

जब मैं एक गलत होस्ट हेडर भेज रहा था तो मुझे यह त्रुटि हुई थी।

मैं http://127.0.0.1:12345 से https://site.com:443 पर एक प्रॉक्सी विकसित कर रहा था । इसलिए मैं अनुरोध हेडर भेज रहा था जैसा कि ब्राउज़र से आया था और मेजबान था: 127.0.0.1: 12345 हेडर। मैंने समस्या को हल करने के लिए ब्राउज़र से आए होस्ट हेडर को हटा दिया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.