मैं एसएसएल Net::HTTP
का उपयोग कर संसाधन लाने की कोशिश कर रहा हूं।रूबी 1.8.7 और नेट :: HTTP: क्लाइंट प्रमाण पत्र के साथ एक एसएसएल प्राप्त अनुरोध बनाना?
req = Net::HTTP::Get.new(ContentURI.path)
https = Net::HTTP.new(ContentURI.host, ContentURI.port)
https.use_ssl = true
https.cert = OpenSSL::X509::Certificate.new(@cert_raw)
https.key = OpenSSL::PKey::RSA.new(@cert_key_raw)
https.verify_mode = OpenSSL::SSL::VERIFY_PEER
https.ca_file = File.join(TestDataPath, 'cacert.pem')
resp = https.start { |cx| cx.request(req) }
या वैकल्पिक अंतिम पंक्ति के साथ:
resp = https.get(ContentURI.path)
मैं सत्यापित किया है कि विभिन्न बिट्स (प्रमाणपत्र, कुंजी, CA प्रमाणपत्र, आदि) सही हैं यहाँ प्रासंगिक कोड टुकड़ा है ।
समस्याकि cx.request(req)
एक अपवाद फेंकता है:
OpenSSL::SSL::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read server session ticket A
सर्वर पर अपाचे एसएसएल त्रुटि लॉग निम्नलिखित शामिल हैं:
[Tue Jan 24 11:47:26 2012] [debug] ssl_engine_kernel.c(1876): OpenSSL: Loop: SSLv3 read finished A
[Tue Jan 24 11:47:26 2012] [debug] ssl_engine_kernel.c(1905): OpenSSL: Exit: error in SSLv3 write session ticket A
[Tue Jan 24 11:47:26 2012] [debug] ssl_engine_kernel.c(1905): OpenSSL: Exit: error in SSLv3 write session ticket A
[Tue Jan 24 11:47:26 2012] [info] [client 10.11.88.53] SSL handshake interrupted by system [Hint: Stop button pressed in browser?!]
[Tue Jan 24 11:47:26 2012] [info] [client 10.11.88.53] Connection closed to child 0 with abortive shutdown (server _SERVERNAME_:443
प्रमाणपत्र, कुंजी, और CA प्रमाणपत्र फ़ाइल काम इस एसएसएल मेजबान के साथ अन्य उपकरणों के माध्यम से; मुझे Net::HTTP[S]
का उपयोग करके सफलतापूर्वक उस सफलता को पुन: पेश करने में परेशानी हो रही है।
किसी भी व्यक्ति को धन्यवाद जो यह पहचान सकता है कि मैं क्या गलत कर रहा हूं!
ओपनएसएल स्रोत को देखते हुए, त्रुटि संदेश लापता सत्र टिकट से संबंधित है (क्लाइंट-सप्लाई डेटा एसएसएल सत्र फिर से शुरू करने की आवश्यकता है); इस मामले में ऐसा क्यों नहीं हो रहा है ... – Wejn