रूबी में xmlrpc/client
का उपयोग करते हुए एक XML-RPC सेवा तक पहुंचने पर, यह सर्वर प्रमाणपत्र मान्य नहीं होने पर OpenSSL::SSL::SSLError
फेंकता है। मैं इसे इस त्रुटि को अनदेखा कैसे कर सकता हूं और कनेक्शन के साथ आगे बढ़ सकता हूं?मैं रूबी के xmlrpc क्लाइंट को SSL प्रमाणपत्र त्रुटियों को अनदेखा कैसे कर सकता हूं?
8
A
उत्तर
12
बाहर कर देता है यह इस तरह है:
xmlrpc = ::XMLRPC::Client.new("foohost")
xmlrpc.instance_variable_get(:@http).instance_variable_set(:@verify_mode, OpenSSL::SSL::VERIFY_NONE)
कि रूबी 1.9.2 के साथ काम करता है, लेकिन स्पष्ट रूप से आंतरिक पर poking है, इसलिए असली जवाब है, "एपीआई तरह के एक तंत्र प्रदान नहीं करता है, लेकिन यहाँ है एक हैक "।
0
वास्तव में ग्राहक अद्यतन किया गया है, अब एक http कनेक्शन के लिए सीधी पहुंच है: https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/41286/diff/lib/xmlrpc/client.rb
xmlrpc.http.verify_mode = OpenSSL::SSL::VERIFY_NONE
लेकिन बेहतर ca_file
या ca_path
निर्धारित किया है। फिर भी मुझे _async
कॉल पर ऐसी कॉन्फ़िगरेशन लागू करने का कोई विकल्प नहीं दिखाई देता है।
अद्यतन:
xmlrpc_client.http.ca_file = @options[:ca_file]
xmlrpc_client.instance_variable_set(:@ca_file, @options[:ca_file])
def xmlrpc_client.net_http(host, port, proxy_host, proxy_port)
h = Net::HTTP.new host, port, proxy_host, proxy_port
h.ca_file = @ca_file
h
end
तो तुम दोनों, पुराने दृष्टिकोण और बंदर पैचिंग की जरूरत है: ग्राहक वस्तु पैचिंग बंदर द्वारा एक समाधान मिल गया। हम एक आवृत्ति चर भी जोड़ते हैं, अन्यथा नई विधि वास्तविक मान नहीं देख सकती है।