ruby - 为什么我只在 Windows 上收到 OpenSSL::SSL::SSLError?

标签 ruby ssl https

我正在从 HTTPS 网站下载文件。我已将问题缩小为:

>> require 'open-uri'
>> open('https://www.gmail.com/') # just as an example
C:/Ruby/lib/ruby/1.8/net/http.rb:586:in `connect': certificate verify failed (OpenSSL::SSL::SSLError)
    from C:/Ruby/lib/ruby/1.8/net/http.rb:586:in `connect'
    from C:/Ruby/lib/ruby/1.8/net/http.rb:553:in `do_start'
    from C:/Ruby/lib/ruby/1.8/net/http.rb:542:in `start'
    from C:/Ruby/lib/ruby/1.8/open-uri.rb:242:in `open_http'
    from C:/Ruby/lib/ruby/1.8/open-uri.rb:616:in `buffer_open'
    from C:/Ruby/lib/ruby/1.8/open-uri.rb:164:in `open_loop'
    from C:/Ruby/lib/ruby/1.8/open-uri.rb:162:in `catch'
    from C:/Ruby/lib/ruby/1.8/open-uri.rb:162:in `open_loop'
    from C:/Ruby/lib/ruby/1.8/open-uri.rb:132:in `open_uri'
    from C:/Ruby/lib/ruby/1.8/open-uri.rb:518:in `open'
    from C:/Ruby/lib/ruby/1.8/open-uri.rb:30:in `open'
    from openuri_sandbox.rb:3

此代码在 Mac OS X 或 Linux 上工作得很好,但它只是在 Windows 上开始失败。我已经在几个 Win XP 安装和一个 Win 7 安装上进行了测试——它们都失败了。他们都在运行 Ruby 1.8.6 补丁级别 287。这是怎么回事?我们知道我们可以关闭 SSL 验证并且它有效(或者至少看起来有效),但这似乎是一个糟糕的解决方案。

我正在使用 Mechanize 与相关网站进行交互,因此我希望能够继续使用它。

更新:看起来 Mechanize 的问题可能是 Windows 7 特有的,这与我之前认为的不同。不过,它在几周前才起作用。

更新 2:这在 Windows(XP 和 7)上仍然发生,但在 Linux 上不会发生。这不再是我工作所需的重要脚本中的问题,但仍不确定原因。

最佳答案

似乎是因为 ruby​​ 不附带证书? http://betterlogic.com/roger/2011/08/github-jruby-ssl-woe/

关于ruby - 为什么我只在 Windows 上收到 OpenSSL::SSL::SSLError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2791722/

相关文章:

linux - 无法通过squid3访问https网站

powershell - 无法使用来自 PowerShell 的 Invoke-Webrequest 为 SSL/TLS 安全通道建立信任关系

ruby - Rails 6 自动加载未找到类

ruby-on-rails - 更新到 gem 1.8.1 时出现 ruby​​onrails 错误

ruby-on-rails - 子级的 after_destroy 回调保存了父级的依赖性,当父级被销毁时会导致问题

wordpress - 由于双击广告 dot.gif 导致的混合内容错误

PHPMailer 不适用于 gmail

windows - Windows 上的 svn 客户端非常慢,Linux 上的 svn 客户端非常快

go - 在 ServeHTTP 中验证客户端证书并忽略错误的客户端证书是否安全?

ruby - 如何检查 PDF 文件是否与 Ruby/Rspec 有一些链接?