ruby-on-rails - 有效证书上的 Rails SSL 证书错误

标签 ruby-on-rails openssl lets-encrypt

我有一个小型 Rails 应用程序,可以在我们的平台上执行各种检查,并在出现问题时向我发送电子邮件。一切都运行良好,直到今天我开始收到有关以下错误的警报:

SSL_connect returned=1 errno=0 state=error: certificate verify failed (certificate has expired)
现在的问题是有问题的证书是有效的,它会自动更新(让我们加密),并且这段代码几年来一直没有受到影响,之前从未出现过任何问题,突然这开始发生。
抛出异常的代码:
def get_request url
  uri = URI.parse(url)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true

  #more than 10 seconds this is too slow
  http.open_timeout = 10
  http.read_timeout = 10

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

  if response.code.to_i == 200
    return true
  else
    puts "Failed to GET #{url}: #{response.code.to_i}"
    return false
  end
end
如果我在浏览器中打开该站点,它会显示没有问题的安全连接,并显示正在使用有效证书,此外,如果我检查 certbot我得到以下信息:Expiry Date: 2021-11-22 17:48:58+00:00 (VALID: 52 days)很明显证书是有效的,为什么 Rails 突然对它发脾气?
请注意,我已经重新启动了 Nginx 以防万一,这没有帮助。
附加信息:Ubuntu 16.04.5、OpenSSL 1.0.2g 2016 年 3 月 1 日、Rails 4.2、Ruby 2.6.5
编辑:
此错误也会发生在不同的 url 上,该 url 也具有有效的证书。
编辑 2:
我已经隔离了这个问题,它与 Let's Encrypt DST Root CA X3 已过期有关。很多人都在处理这个问题,我会在找到解决方案后报告我的解决方案。

最佳答案

所以在阅读完这篇 long thread在 Let's Encrypt 社区中,我的案例的解决方案最终是删除 DST Root CA X3证书:

sudo rm /usr/share/ca-certificates/mozilla/DST_Root_CA_X3.crt
sudo update-ca-certificates
之后不再有来自 openssl 的错误。

关于ruby-on-rails - 有效证书上的 Rails SSL 证书错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69404785/

相关文章:

ruby-on-rails - 缓慢的 activeadmin 索引页面

ruby-on-rails - 如何检查一个数字是否在 activerecord 的范围内?

c - 我们如何将密码的哈希 sha256 转换为 EC key 私钥?

ssl - 移动设备上的 Chromium(Chrome、Brave)停止信任我的本地 LetsEncrypt 证书

ruby-on-rails - Rails => 在模型内连接整数和字符串

bash - 在 Ubuntu/Bash 和 Windows/Powershell 之间生成具有不同结果的 SHA1 签名

c - 在windows上添加openssl c语言库

.net - 使用 LetsEncrypt.org SSL 证书签署 Visual Studio 应用程序

nginx - "jrcs/letsencrypt-nginx-proxy-companion" docker 镜像 : too many certificates already issued for exact set of domains

ruby-on-rails - 我如何找到可以贡献的开源项目(Ruby、Rails)