我在 SO 和博客文章中看到的很多内容是
- 默认情况下,Net::HTTP 不验证对等 SSL 证书
- 要强制 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_path
,http.ca_file
它们都是空白的。
我在 Ruby 1.9.3p374 中运行此代码。也许当在我的 Mac 上编译 Ruby 时,它从 openssl 或其他什么地方拉入了 CA 证书链的一些默认位置?