无法绕过OpenSSL验证 - 证书验证失败(OpenSSL :: SSL :: SSLError)

时间:2014-07-09 11:39:29

标签: ruby-on-rails ruby openssl nokogiri

我正在尝试通过Nokogiri解析HTTPS XML Feed但我收到此OpenSSL错误:

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

我也可以看到SSL_CERT_FILE:

echo $SSL_CERT_FILE
/home/user/certs/cacert.pem

这就是我试图解析的方式:

@feed = "https://example.com/feed1.xml"
doc =  Nokogiri::XML(open(@feed)

我试图绕过OpenSSL验证,但我仍然得到同样的错误:

doc =  Nokogiri::XML(open(@feed,{ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE}))

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:6)

此问题通常出现在Windows上。

一个快速解决方案是将ssl_verify_mode传递给

require 'open-uri'
require 'openssl'
open(some_url, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE)

另一个快速的方法是通过执行

覆盖脚本开头的OpenSSL::SSL::VERIFY_PEER
require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

想要真正解决方案的人可以尝试https://gist.github.com/fnichol/867550

中描述的方法