尝试使用 open-uri 在 ruby​​ 中打开 https 站点会出现 ssl 问题。我该如何解决?

Bra*_*ard 3 ruby ssl open-uri

查阅了大量文档并尝试了猴子修补。不知道如何强制获得适当的证书,也不知道从哪里获得它们。常规 http 页面一切正常。使用 Ruby 1.9.3

这是堆栈跟踪:

C:/Ruby193/lib/ruby/1.9.1/net/http.rb:800:in `connect': SSL_connect returned=1 e
rrno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL
::SSL::SSLError)
        from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:800:in `block in connect'
        from C:/Ruby193/lib/ruby/1.9.1/timeout.rb:55:in `timeout'
        from C:/Ruby193/lib/ruby/1.9.1/timeout.rb:100:in `timeout'
        from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:800:in `connect'
        from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:756:in `do_start'
        from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:745:in `start'
        from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:306:in `open_http'
        from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:776:in `buffer_open'
        from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:203:in `block in open_loop'
        from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:201:in `catch'
        from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:201:in `open_loop'
        from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:146:in `open_uri'
        from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:678:in `open'
        from C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:33:in `open'
Run Code Online (Sandbox Code Playgroud)

Bra*_*ard 5

当尝试使用 open-uri 调用 open 时,您可以传递一个选项以不验证 SSL。

页面 = Nokogiri::HTML(open(url,{ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE}))

  • 如果您的范围内没有“OpenSSL”,请“require 'openssl'”或传递所需的值(“0”):“open(url, {ssl_verify_mode: 0})”。 (4认同)