gpt4 book ai didi

Let's Encrypt Root Certificate Expiration 和 OpenSSL 1.0.2 的 Ruby/Mechanize 解决方法

转载 作者:行者123 更新时间:2023-12-04 16:20:13 25 4
gpt4 key购买 nike

expiration在 Let's Encrypt 的根证书 DST Root CA X3 中,我使用 OpenSSL 连接到使用此证书的服务器的 ruby​​ 脚本返回错误:

/usr/local/Cellar/ruby/2.3.0/lib/ruby/2.3.0/net/http.rb:933:in `connect_nonblock': SSL_connect returned=1 errno=0 state=error: certificate verify failed (OpenSSL::SSL::SSLError)
这可以被覆盖:
agent = Mechanize.new
agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
然而,这显然是非常不安全的。
OpenSSL blog建议修改信任存储,我不想这样做,或者通过代码解决方法,如下所示:

call X509_VERIFY_PARAM_set_flags() function with the X509_V_FLAG_TRUSTED_FIRST flag


我尝试设置此标志:
OpenSSL::X509::X509_VERIFY_PARAM_set_flags(OpenSSL::X509::X509_V_FLAG_TRUSTED_FIRST)
返回
uninitialized constant OpenSSL::X509::X509_V_FLAG_TRUSTED_FIRST (NameError)

最佳答案

在 Ruby 中,常量是 OpenSSL::X509::V_FLAG_TRUSTED_FIRST .该标志可以在 OpenSSL::X509::Store 上设置客户端实例为 OpenSSL::X509::Store#flags=
但是,您必须弄清楚如何访问此 OpenSSL::X509::Store你的图书馆的实例...
在任何情况下,推荐的方法实际上是更新到更新的 Ruby(和 OpenSSL),因为 OpenSSL 1.0.2 不再接收任何公共(public)安全更新。自 Ruby 2.5 起支持 OpenSSL 1.1。
或者,您还可以调整系统的信任库并删除过期的根证书。这应该不会产生负面影响,因为无论如何它都将无法进行验证。

关于Let's Encrypt Root Certificate Expiration 和 OpenSSL 1.0.2 的 Ruby/Mechanize 解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70100164/

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