gpt4 book ai didi

ruby - 为什么我不需要为 Net::HTTP SSL 请求指定一个 CA 包?

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

我在 SO 和博客文章中看到的很多内容都是

  1. 默认情况下,Net::HTTP 不验证对等 SSL 证书
  2. 要强制 Net::HTTP 验证对等点,您也需要这样做并提供包含受信任机构的 CA 证书文件

但是,我发现这并不是完全必要的。在我的 Mac 上,我有以下代码

http = Net::HTTP.new('www.google.com', 443)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.start do
http.request_get('/') do |response|
puts response.body
end
end

这行得通。但是 Ruby 使用什么来验证对等点呢?当我查看 http.ca_pathhttp.ca_file 的输出时,它们都是空白的。

我在 Ruby 1.9.3p374 中运行这段代码。也许当 Ruby 在我的 Mac 上编译时,它从 openssl 或其他东西中提取了 CA 证书链的一些默认位置?

最佳答案

看起来如果没有设置验证回调,则使用 OpenSSL 库默认回调。参见 the openssl module verify callback wrapper 中的第 217 行(ok 参数是默认回调的结果)。

在 OS X 上,Apple 显然已经在其 OpenSSL 库中自定义了默认回调以挂接到 OS X Keychain 工具。 Google 证书的根 CA 是 Equifax Secure Certificate Authority。如果您为此 CA 更改钥匙串(keychain)中的信任设置(例如使用钥匙串(keychain)访问实用程序),那么您的 ruby​​ 测试会相应地运行。

我相信您的问题的答案是,当需要但未配置对等证书验证时,OS X 附带的 ruby 会使用钥匙串(keychain)进行验证。

关于ruby - 为什么我不需要为 Net::HTTP SSL 请求指定一个 CA 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17454912/

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