如何使用net / httpvalidationruby中的SSL证书链

如何使用net / http在ruby中validationhttps://processing.ukash.com/等网站的证书?

https = Net::HTTP.new('processing.ukash.com', 443) https.use_ssl = true https.verify_mode = OpenSSL::SSL::VERIFY_NONE 

到目前为止工作,但我如何validation它现在是正确的证书? 我从firefox中保存了证书,但生成的.pem文件中有许多证书,net / http似乎不喜欢它。

从我的代码片段集合:

 #!/usr/bin/env ruby # How to: # ======= # Use Ruby's net/https library, to verify a SSL certificate. # ========================================================== # - Without verification the following code will lead to: # warning: peer certificate won't be verified in this SSL session # # #------------------begin example----------------------------- # require 'net/http' # require 'net/https' # require 'uri' # # url = URI.parse 'https://myname:mypass@mail.google.com/' # http = Net::HTTP.new(url.host, url.port) # http.use_ssl = (url.scheme == 'https') # request = Net::HTTP::Get.new(url.path) # request.basic_auth url.user, url.password # response = http.request(request) # #-------------------end example------------------------------ # # To verify the ssl cert cosider adapting the following. # Status: Untested # ======= # # References: # =========== # [1] http://mimori.org/%7Eh/tdiary/20080301.html#p03 # [2] http://redcorundum.blogspot.com/2008/03/ssl-certificates-and-nethttps.html # require 'net/http' require 'net/https' require 'uri' RootCA = '/etc/ssl/certs' url = URI.parse 'https://myname:mypass@mail.google.com/' http = Net::HTTP.new(url.host, url.port) http.use_ssl = (url.scheme == 'https') if (File.directory?(RootCA) && http.use_ssl?) http.ca_path = RootCA http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.verify_depth = 5 else http.verify_mode = OpenSSL::SSL::VERIFY_NONE end request = Net::HTTP::Get.new(url.path) request.basic_auth url.user, url.password response = http.request(request) 

希望这可以帮助?

为了完整性和我未来的我,这是我用这个做的一个小gem: https : //github.com/jarthod/ssl-test