2011-01-20 20 views
8

Ruby'de xmlrpc/client kullanarak bir XML-RPC hizmetine erişirken, sunucu sertifikası geçerli olmadığı zaman OpenSSL::SSL::SSLError atar. Bu hatayı görmezden gelip nasıl bağlantıya devam edebilirim? Ruby 1.9.2 ile çalışır, ancak açıkça aralıklarında alay, bu nedenle gerçek cevaptırRuby'nin xmlrpc istemcisini SSL sertifikası hatalarını görmezden nasıl çıkarabilirim?

xmlrpc = ::XMLRPC::Client.new("foohost") 
xmlrpc.instance_variable_get(:@http).instance_variable_set(:@verify_mode, OpenSSL::SSL::VERIFY_NONE) 

"API böyle bir mekanizma sağlamaz, ancak burada:

cevap

12

böyle olduğu da ortaya çıktı Bir hack ".

0

Aslında müşteri güncellendi, artık tek bir http bağlantısı doğrudan erişim vardır: https://bugs.ruby-lang.org/projects/ruby-trunk/repository/revisions/41286/diff/lib/xmlrpc/client.rb

xmlrpc.http.verify_mode = OpenSSL::SSL::VERIFY_NONE 

Ama daha iyi ca_file veya ca_path ayarlayın. Yine de bu yapılandırmayı _async çağrılarına uygulamak için bir seçenek görmüyorum.

Güncelleme:

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 

Yani hem eski yaklaşım ve maymun yama gerekir: istemci nesneyi yama maymun tarafından geçici bir çözüm buldu. Ayrıca bir örnek değişken ekliyoruz, aksi takdirde yeni yöntem gerçek değeri göremez.

İlgili konular