ruby - 在 Ruby 中验证 HTTPS 的自签名 TLS 证书

标签 ruby

如何在 RUBY 的 GET 请求中使用 SSL 证书验证(在 URL 中使用密码参数)? ->

require 'net/https'
require 'uri'

uri = URI.parse(ARGV[0] || 'https://example.com?password=my_password')

http = Net::HTTP.new(uri.host, uri.port)

if uri.scheme == "https" 

    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_PEER
    http.ca_file=File.join(File.dirname(__FILE__),
             "/Users/me/Desktop/demp.pem")
end

http.start do
    http.request_get(uri.path) do |res|

print res.body

end

end

-->输出

SSL_connect 返回=1 errno=0 state=error:证书验证失败(证书链中的自签名证书)(OpenSSL::SSL::SSLError)

最佳答案

这对我有用。

require 'net/http'
require 'net/https'
require 'openssl'
require 'uri'
require 'json'


ContentURI = URI.parse("example.com")
@cert_raw = File.read('cert.pem')
TestDataPath = '.'

req = Net::HTTP::Get.new(ContentURI.path)
https = Net::HTTP.new(ContentURI.host, ContentURI.port)
https.use_ssl = true
https.cert = OpenSSL::X509::Certificate.new(@cert_raw)
https.key = OpenSSL::PKey::RSA.new(@cert_raw)
https.verify_mode = OpenSSL::SSL::VERIFY_PEER
resp = https.start { |cx| cx.request(req) }
p resp
p resp.body

关于ruby - 在 Ruby 中验证 HTTPS 的自签名 TLS 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55242790/

相关文章:

ruby-on-rails - 如何在 ruby​​ 测试中写出三个变量中至少有一个为空?

ruby-on-rails - Rails STI 和多级继承查询

ruby - 以 Stackoverflow 信誉的样式显示数字

arrays - 如何获取带空格的数组的最大值和最小值?

ruby - 在windows7下安装jekyll

javascript - 如何选择由 ruby​​ 实例变量表示的动态 ID?

ruby-on-rails - Rails 邮件程序 "undefined method"错误。

ruby-on-rails - 如何将自定义文本添加到成功 rspec 消息中

ruby-on-rails - accepts_nested_attributes_for 是否也应该正确设置关联?

ruby - 使用 Chef 和 Vagrant 在 Ubuntu 上安装 Ruby 1.9.2