【问题标题】:Verify self-signed TLS certificate for HTTPS in Ruby在 Ruby 中验证 HTTPS 的自签名 TLS 证书
【发布时间】:2019-08-10 02:03:57
【问题描述】:

如何在 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 returned=1 errno=0 state=error: 证书验证失败(证书链中的自签名证书)(OpenSSL::SSL::SSLError)

【问题讨论】:

  • 请编辑您的问题以包含您目前编写的代码。
  • 我尝试了多种方法,所以只想要一个小脚本来验证 ruby​​ 中的 ssl 证书。
  • 您尝试了一些东西真是太好了。请展示你的作品。如果我们知道您尝试了什么,我们可以帮助您了解它为什么不起作用以及如何使它起作用,而不是为您编写代码。
  • 已添加!我需要在url中添加参数,然后通过ssl cert验证它
  • 我已经编辑了你的标题以更准确,但如果这不是你的问题的意图,请进一步澄清。

标签: ruby


【解决方案1】:

这对我有用。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 2014-05-05
    相关资源
    最近更新 更多