gpt4 book ai didi

ruby - SSL 验证错误 Ruby

转载 作者:太空宇宙 更新时间:2023-11-03 13:44:15 28 4
gpt4 key购买 nike

所以我有这个脚本:

#!/usr/bin/ruby

require 'net/https'
require 'open-uri'

puts "HTTPS Client for Ruby!"
puts "Enter the URL"
site = gets.chomp

url = URI.parse(site)

http = Net::HTTP.new(url.host,url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER

http.cert_store = OpenSSL::X509::Store.new
http.cert_store.set_default_paths
http.cert_store.add_file('/home/user/sec/certs/cacert.pem')

page = Net::HTTP.get(url)

puts page

它工作正常。它能够抓取几乎所有 http 或 https 网站的主页的 html。但是,我在无法使用的虚拟机中设置了启用 HTTPS 的网络服务器。在我在网络服务器上启用 SSL 之前,这个脚本很好地抓取了 html。所以我的问题是,为什么我会收到此错误:

/usr/lib/ruby/2.1.0/net/http.rb:920:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)
from /usr/lib/ruby/2.1.0/net/http.rb:920:in `block in connect'
from /usr/lib/ruby/2.1.0/timeout.rb:67:in `timeout'
from /usr/lib/ruby/2.1.0/net/http.rb:920:in `connect'
from /usr/lib/ruby/2.1.0/net/http.rb:863:in `do_start'
from /usr/lib/ruby/2.1.0/net/http.rb:852:in `start'
from /usr/lib/ruby/2.1.0/net/http.rb:583:in `start'
from /usr/lib/ruby/2.1.0/net/http.rb:478:in `get_response'
from /usr/lib/ruby/2.1.0/net/http.rb:455:in `get'
from https_client.rb:20:in `<main>'

当运行脚本试图获取我的网络服务器的 html 时?我指定的路径在那里有一个实际的证书。

最佳答案

当 SSL 证书是自签名的/不是来自经过验证的 SSL 提供商时,您会收到该错误。因此假设您从中提取的网站是您自己的/您信任它并且没有经过验证的证书,请更改

http.verify_mode = OpenSSL::SSL::VERIFY_PEER

http.verify_mode = OpenSSL::SSL::VERIFY_NONE

same situation

关于ruby - SSL 验证错误 Ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22340673/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com