【发布时间】:2015-01-28 10:26:29
【问题描述】:
我尝试了不同的方法(来自谷歌)来解决这个错误,但失败了。我无法解决这个问题。
我的代码如下所示:
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse "https://dev.ramble.com/v1/user/login"
uri.user = "user1"
uri.password = "mypass"
connection = Net::HTTP::new uri.host, uri.port
connection.use_ssl = true
connection.ca_file = "/usr/local/etc/openssl/cert.pem"
connection.verify_mode=OpenSSL::SSL::VERIFY_PEER
session = connection.start
它会引发以下错误:
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
from /Users/cmthakur/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/net/http.rb:920:in `connect'
from /Users/cmthakur/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/net/http.rb:920:in `block in connect'
from /Users/cmthakur/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/timeout.rb:76:in `timeout'
from /Users/cmthakur/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/net/http.rb:920:in `connect'
from /Users/cmthakur/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/net/http.rb:863:in `do_start'
from /Users/cmthakur/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/net/http.rb:858:in `start'
如果有人帮助我解决此错误,我将非常感激。
【问题讨论】:
-
这个
https://dev.ramble.com/v1/user/login是否使用由已知CA签署的证书?而这个 CA 证书在usr/local/etc/openssl/cert.pem? -
谢谢@Grych,但确实如此
-
您可以尝试使用相同的代码连接到另一台知名机器,例如google.com?如果有效,则意味着您主机上的证书有问题
-
我无法联系
dev.ramble.com(它可能仅在您的网络中可见)来检查证书,但在www.ramble.com上,证书无效:“主机名不匹配”。仔细检查服务器上安装了哪个证书。
标签: ruby http openssl ssl-certificate net-http