2

当我尝试运行此代码时

require "net/https"                                                  
require "uri"

uri = URI.parse("https://...") # url hidden
pem = File.read("c.pem")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.ca_file = 'ca.pem'
http.cert = OpenSSL::X509::Certificate.new(pem)
http.key = OpenSSL::PKey::RSA.new(pem)
http.verify_mode = OpenSSL::SSL::VERIFY_PEER

request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request).body

puts response

结果是

/home/nicolas/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799:in `connect': 
SSL_connect returned=1 errno=0 state=SSLv3 write certificate verify A: EVP lib (OpenSSL::SSL::SSLError)
    from /home/nicolas/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799:in `block in connect'
    from /home/nicolas/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/timeout.rb:54:in `timeout'
    from /home/nicolas/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/timeout.rb:99:in `timeout'
    from /home/nicolas/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/net/http.rb:799:in `connect'
    from /home/nicolas/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/net/http.rb:755:in `do_start'
    from /home/nicolas/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/net/http.rb:744:in `start'
    from /home/nicolas/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/net/http.rb:1284:in `request'

我正在使用 Debian 和 ruby​​ 1.9.3-p392。当使用 Ubuntu 和 ruby​​ 1.9.3-p392 在其他环境中运行相同的代码时,此代码运行没有问题。

有谁知道我该如何解决这个问题?

4

0 回答 0