बनाया है मेरे पास एक परीक्षण वातावरण है जो एक https कनेक्शन पर सर्वर चलाने के लिए रूबी का उपयोग करता है। चूंकि रूबी के नवीनतम संस्करण एक अवैध सर्वर के साथ एक https सर्वर से कनेक्ट करने से इनकार करते हैं (this earlier question of mine देखें) और मैं रूबी के एक नए संस्करण का उपयोग शुरू करना चाहता हूं, मैं एक वैध प्रमाणपत्र स्थापित करने की कोशिश कर रहा हूं।सीए द्वारा हस्ताक्षरित प्रमाणपत्र के साथ सर्वर पर https का उपयोग करके कनेक्टिंग मैंने
मैंने उपयोग करने के लिए एक सीए प्रमाणपत्र बनाया है (कई सर्वरों का परीक्षण किया जा रहा है, इसलिए यह आसान तरीका लगता है), और सर्वर पर स्थापित एक नए प्रमाणपत्र पर हस्ताक्षर करने के लिए सफलतापूर्वक इसका उपयोग किया गया है और इसका उपयोग किया जा रहा है। मैंने ब्राउज़र स्टोर में सीए प्रमाण पत्र जोड़ा है और यह (ब्राउज़र) अब शिकायत के बिना सर्वर से कनेक्ट होगा। इसलिए मुझे विश्वास है कि मेरे प्रमाणपत्र वैध हैं और सही तरीके से स्थापित हैं।
मुझे पता है कि रूबी ब्राउज़र के समान स्टोर का उपयोग नहीं करता है। मैंने अन्य (सार्वजनिक) सर्वर से कनेक्ट करने के लिए सीए फ़ाइल here उपलब्ध कराई है (Net::HTTP#ca_file=
विधि का उपयोग करके सेट करें) और यह भी काम करता है।
जो मैं काम नहीं कर सकता वह रूबी मेरे प्रमाण पत्र का उपयोग कर मेरे सर्वर से जुड़ रहा है। मैं अपने प्रमाण पत्र (ऊपर लिंक की गई फ़ाइल के लिए अपने प्रमाणपत्र जोड़ने सहित) पर यह इशारा कर के विभिन्न तरीकों की कोशिश की है और यह हमेशा एक ही त्रुटि देता है:
SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A (OpenSSL::SSL::SSLError)
क्या मैं रूबी को समझाने के लिए मेरी प्रमाण पत्र स्वीकार करने के लिए मुझे क्या करना होगा और मेरे सर्वर से कनेक्ट करें?
कोड मैं का उपयोग कर रहा है:
require 'net/https'
uri = URI.parse("https://hostname/index.html")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.ca_file = "My CA cert file"
request = Net::HTTP::Get.new(uri.path)
response = http.request(request)
मैं यह सोचते कर रहा हूँ इस किसी भी तरह गलत है। मैं क्या जानना चाहता हूं, मुझे अपने सीए प्रमाण पत्र का उपयोग करने के लिए क्या करना चाहिए?
आप कहते हैं कि आप रूबी के साथ अपना सर्वर भी चलाते हैं? क्या आप क्लाइंट और सर्वर के लिए प्रासंगिक कोड स्निपेट पोस्ट कर सकते हैं? – emboss
@emboss सर्वर रूबी नहीं है (यह वास्तव में tomcat है हालांकि मुझे लगता है कि यह महत्वपूर्ण नहीं है)। मुझे यकीन नहीं है कि आप कौन सा कोड देखना चाहते हैं। मैं बस मानक रूबी https पुस्तकालय का उपयोग कर रहा हूँ। – Jonathan
@ जोनाथन, क्लाइंट कोड चिपका रहा है जिसे आप अपने सर्वर से कनेक्ट करने के लिए उपयोग कर रहे हैं, एक प्रारंभिक बिंदु होगा। –