这篇文章几乎重复了许多其他帖子,包括Rails 4和Ruby 2 Net/HTTP SSL请求: OpenSSL::SSL::SSLError:SSL_connect返回=1 errno=0 state=SSLv2/v3读取服务器你好:未知协议和SSL_connect返回=1errno=0 state=SSLv3读取服务器证书B:证书验证失败,但有一个关键区别:证书验证失败错误仅在通过SSL代理(Charles)代理时发生,并且仅在最新版本的Ruby中发生。
具体而言,此(非代理)代码工作:
uri = URI.parse('https://www.ibm.com')
http = Net::HTTP.new(uri.host, uri.port, nil)
http.use_ssl = true
http.start { |agent| agent.get(uri.path) }
此(代理)代码失败,出现“证书验证失败”错误:
uri = URI.parse('https://www.ibm.com')
http = Net::HTTP.new(uri.host, uri.port, "localhost", 8888)
http.use_ssl = true
http.start { |agent| agent.get(uri.path) }
该错误仅在当前版本的Ruby/OpenSSL中通过代理时出现。特别地:
curl-vhttps://www.ibm.com/
通过代理时没有错误,这让我认为查尔斯证书是有效的。所有这些都让我怀疑是一个真正的Ruby错误,而不是我的证书有问题,但我很乐意看到其他情况。
我正在观察此环境中的错误:
$ system_profiler SPSoftwareDataType | grep "System Version"
System Version: OS X 10.8.5 (12F45)
$ ruby --version ; openssl version ; gem list | grep http
ruby 2.0.0p247 (2013-06-27) [x86_64-darwin12.4.0]
OpenSSL 1.0.1e 11 Feb 2013
http-cookie (1.0.2)
http_router (0.10.2)
net-http-digest_auth (1.4)
net-http-persistent (2.9)
ntlm-http (0.1.1)
Ruby/OpenSSL的稍旧版本不会出现错误:
$ ruby --version ; openssl version ; gem list | grep http
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin10.8.0]
OpenSSL 0.9.8y 5 Feb 2013
http_router (0.11.0, 0.10.2)
httpauth (0.2.0)
net-http-digest_auth (1.2.1)
net-http-persistent (2.8)
ntlm-http (0.1.1)
我似乎记得需要指出环境变量中的证书。如果您不真正关心验证,那么只需:
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
这里发生的事情是Charles无法为您提供有效的证书”https://www.ibm.com,因为您为Charles设置的任何证书(或者如果Charles创建了自己的证书)都不能用于“www.ibm”。com”名称,并由受信任的证书颁发机构认证。这就是为什么如果客户端验证证书,连接将失败,如果您跳过验证,连接将工作
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
它可能与旧版本的ruby一起工作,因为“net/https”只是在最近才被调整为默认验证证书。
我正在尝试使用SoundCloud SDK进行用户身份验证。用户单击“登录”后我的第一条路线: 然后我有下一条路线,它们被重定向: 我可以成功点击重定向url并返回代码,但我从Sinatra收到以下错误: OpenSSL::SSL::SSL中/signed_处的SSLError\u connect返回=1 errno=0 state=SSLv3读取服务器证书B:证书验证失败 我读过以下流行文章:h
我正在设置Redmine通过IMAP从gmail轮询电子邮件。尝试运行适当的Ruby任务会导致以下错误: SSL_connect返回=1 errno=0 state=SSLv3读取服务器证书B:证书验证失败 当Ruby试图通过OpenSSL连接时,会出现以下代码行中的错误: 当我尝试从OpenSSL命令行连接上述主机时,它成功连接。 我知道Ruby没有找到一些证书,我看到了各种各样的解决方案,但不
是否可以读取BrowserComponennt中的服务器TLS证书(特别是公钥)?
我浏览了互联网,还没有找到一个解决方案或方法来验证证书时,通过HTTPS连接使用TIDWTTP。 我已经连接了一个idsslohandlersocketopenssl组件作为IOHandler,设置SSLModes,等等https://s3.amazonaws.com它无法验证证书。 OpenSSL(Indy)提供 “连接SSL时出错。SSL3\u获取\u服务器\u证书:证书验证失败” OpenS
- 我运行了此脚本,但出现了此错误。我怎么做?
您好,我在构建python映像时遇到问题 错误说, 但是当升级pip时,同样的错误显示。 错误:由于环境原因无法安装程序包错误:HTTPSConnectionPool(host='files.pythonhosted.org',port=443):url超过最大重试次数:/packages/ac/cf/0cc542fc93de2f3b9b53cb979c7d118cffb93204afb4629a