हमें curlHTTPS सर्वर से कनेक्ट नहीं होने से परेशानी हो रही है:
$ curl https://the-problem-site.com (not the real URL!)
curl: (35) error:14077458:SSL routines:SSL23_GET_SERVER_HELLO:reason(1112)
1112 SSL_R_TLSV1_UNRECOGNIZED_NAMEमें है ssl.h।
अगर मैं openssl s_client -connect the-problem-site.com:443इसके बजाय कोशिश करता हूं तो मैं देखता हूं
CONNECTED(00000003)
depth=1 /C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA
verify error:num=20:unable to get local issuer certificate
verify return:0
Certificate chain
0 s:/serialNumber=xx/C=xx/ST=xx/L=xxxx/O=xx/OU=xx/CN=the-problem-site.com
i:/C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA
1 s:/C=US/O=GeoTrust, Inc./CN=GeoTrust SSL CA
i:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA
यह समस्या की तरह लग रहा है कि यह भरोसा नहीं है /C=US/O=GeoTrust Inc./CN=GeoTrust Global CA। हालाँकि वह प्रमाणपत्र स्थापित है: यह है /etc/ssl/certs/GeoTrust_Global_CA.pem, और अगर इसके बजाय मैं चलाता हूं
Opensl s_client -connect the-problem-site.com:443 -CAfile /etc/ssl/certs/GeoTrust_Global_CA.pem
फिर सब कुछ काम करता है। प्रमाणपत्र भी एक हैश-नामित फ़ाइल के रूप में मौजूद है b0f3e76e.0और यह अंदर है ca-certificates.crt। हालाँकि, जहाँ तक मैं देख सकता हूँ, न तो कर्ल और न ही ओपनस्एल किसी भी प्रमाण पत्र को पढ़ने का प्रयास कर रहे हैं; यदि मैं straceउन्हें देखता हूं , तो त्रुटियों से भी नहीं, /usr/lib/ssl/certsया /etc/ssl/certsबिल्कुल भी पढ़ने का प्रयास नहीं है। हालांकि यह Opensl.cnf को पढ़ता है। हम दौड़ चुके हैं update-ca-certificates।
यह उबंटू 10.04 है जिसमें ओपनश्ल 0.9.8k है। हम दो अलग-अलग इंस्टॉलों पर समस्या को पुन: उत्पन्न कर सकते हैं (हालांकि यह संभव है कि पीछे से दूसरे का क्लोन)। यदि मैं ओपनएसएल 0.9.8e के साथ एक सेंटोस वीएम पर एक ही परीक्षण की कोशिश करता हूं तो यह ठीक काम करता है, और मैं इसे प्रमाण पत्र फ़ाइल को पढ़ते हुए देख सकता हूं strace। उबंटू के पट्टियों में समान बिंदु पर कोई समान फ़ाइल पहुँच नहीं है। अगर मैं openssl.cnfफ़ाइल को CentOS VM से उबंटू मशीनों में कॉपी करता हूँ तो कोई फर्क नहीं पड़ता। पर्यावरण या एक .rc फ़ाइल में कुछ भी स्पष्ट नहीं है जो इसका कारण हो सकता है।
किसी भी विचार मैं गलत क्या कर रहा हूँ? क्या यह कार्य, अर्थात कमांड लाइन से स्वचालित रूप से स्थापित सीए को ओपनसेल और कर्ल पिकअप करना चाहिए? यह कैसे कॉन्फ़िगर किया गया है? धन्यवाद!
एक अन्य डेटा बिंदु: 13 सर्वर की एक साफ स्थापना पर, curlप्रमाण पत्र फ़ाइल उठाता है और ठीक काम करता है। openssl s_clientहालांकि अभी भी नहीं है। ऐसा क्यों होगा?