gpt4 book ai didi

ruby - 指定 TLSv1 时 SSLv3 证书验证失败?

转载 作者:数据小太阳 更新时间:2023-10-29 07:49:41 26 4
gpt4 key购买 nike

谁能帮我解决这个问题。我在网上看到过这个问题,但没有人有足够的答案。

我在 Ubuntu、Ruby 1.8.7 和 OpenSSL 1.0.1 上

Net::HTTP.ssl_context_accessor 'ssl_version'
uri = URI.parse("https://www.paypal.com")
http = Net::HTTP.new(uri.host, uri.port)

http.verify_mode = OpenSSL::SSL::VERIFY_PEER
http.use_ssl = true
http.ssl_version = :TLSv1

request = Net::HTTP::Get.new(uri.request_uri)

response = http.request(request)

返回

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

如果我指定 TLSv1,为什么它会提示 SSLv3?

我知道它使用的是 TLSv1,因为如果我这样做了

http.ssl_version = :SSLv3

它会返回

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server hello A: sslv3 alert handshake failure

这是预期的。

我不确定这个错误是怎么回事,我的 ca-certificates 是最新的。

我不能做任何花哨的 OpenSSL::SSL::OP_NO_SSLv3 事情,因为 Ruby 1.8.7 不支持任何这些选项。

感谢您的帮助。

相关且有用的答案,但不是解决方案

最佳答案

正如我在评论中所说,这很可能是影响 Ruby 1.8.7 和 OpenSSL 1.0.1 的错误 - 当您尝试连接到使用 TLSv1 禁用 SSLv3 的服务器时,它将返回一个 证书验证失败 错误。

经过大量搜索,这是我所做的

http.instance_eval { 
@ssl_context = OpenSSL::SSL::SSLContext.new
@ssl_context.set_params({:options=>OpenSSL::SSL::OP_NO_SSLv3})
}

此 hack 允许您设置 OpenSSL::SSL::OP_NO_SSLv3 选项,从而解决问题。

感谢来自 https://www.ruby-forum.com/topic/200072 的提示

关于ruby - 指定 TLSv1 时 SSLv3 证书验证失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29926101/

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