का उपयोग करने का प्रयास करते समय sslv3 अलर्ट हैंडशेक विफलता को हल करना मैं एक ऐसी सेवा से कनेक्ट करने का प्रयास कर रहा हूं जिसके लिए प्राधिकरण के लिए प्रमाण पत्र की आवश्यकता है। प्रक्रिया यह है कि मैं सेवा को एक सीएसआर फ़ाइल भेजता हूं। सेवा सीएसआर पर हस्ताक्षर करती है और मुझे एक प्रमाण पत्र भेजती है जिसका उपयोग मैं कनेक्शन के लिए करता हूं।क्लाइंट प्रमाणपत्र
मैं निम्न आदेश लाइन द्वारा सीएसआर उत्पन्न:
openssl req -new -nodes -newkey rsa:2048 -keyout cert.key -out cert.csr
मैं cert.csr की सामग्री ले गए और उन्हें करने के लिए भेजा। वे क्लाइंट प्रमाण पत्र उत्पन्न करते हैं और मुझे पीईएम फ़ाइल वापस मिल गई है।
अब मैं कर्नेल() के लिए SSLCERT में अपनी प्रमाणपत्र फ़ाइल का उपयोग करके कनेक्ट करने का प्रयास करता हूं और cert.key से निजी कुंजी प्रदान करता हूं CURLOPT_SSLKEY - (जो मुझे चरण 1 पर मिला है)।
error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
क्या मैं इस प्रक्रिया में गलत कर रहा हूँ:
साथ विफल?
यह काम करता है जब मैं सेवा से एक निजी कुंजी (स्वयं हस्ताक्षरित प्रमाणपत्र) सहित एक परीक्षण प्रमाण पत्र प्राप्त करने का प्रयास करता हूं। लेकिन जब मैं अपने सीएसआर से उत्पन्न प्रमाणपत्र का उपयोग करता हूं और फिर अपनी निजी कुंजी को कुंजी के रूप में उपयोग करता हूं, तो यह हैंडशेक विफलता के साथ त्रुटियों।
तो मुझे पता है कि इसमें ओपनएसएल/कर्ल वी 3/टीएलएस इत्यादि का समर्थन नहीं करता है, जो कि समाधान के लिए शोध करते समय दूसरों को उनकी समस्या का पता चला था।
curl -i -v --request POST https://service.com/ --cert clientcert.pem --key private_key.pem --cert-type pem --tlsv1.1 --insecure
* Connected to service.com (1xx.xxx.xxx.xx) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: none
CApath: /etc/ssl/certs
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Request CERT (13):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS handshake, CERT verify (15):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS alert, Server hello (2):
* error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
* Closing connection 0
रनिंग निम्नलिखित संस्करणों:
यहाँ मैं क्या चलाने है कर्ल 7.35.0 (x86_64-पीसी-linux-gnu) libcurl/7.35.0 OpenSSL/1.0.1f zlib/1.2.8 libidn /1.28 librtmp/2,3
* नहीं * निजी कुंजी कहीं भी भेजी जाती है, एसएसएल के माध्यम से अकेले रहने दें। यही कारण है कि उन्हें निजी कहा जाता है। यह समझने में मुश्किल है कि आप वास्तव में क्या पूछ रहे हैं। – EJP
@EJP ठीक है, लेकिन मुझे एक निजी कुंजी भेजने की आवश्यकता है क्योंकि मुझे उनसे मिलने वाली एकमात्र चीज एक प्रमाणपत्र है (मैंने बनाया सीएसआर से उत्पन्न)? क्या मैं कुछ भूल रहा हूँ? – Karem
@EJP मुझे एक निजी कुंजी भेजनी होगी, अन्यथा त्रुटि "निजी कुंजी फ़ाइल सेट करने में असमर्थ": – Karem