运行 在 ruby 中安装 rails 应用程序时无法验证 SSL 证书错误

Could not verify the SSL certificate error when running bundle install in ruby on rails app

我在 rails 应用程序上有一个 ruby,在我尝试 运行 捆绑安装时抛出错误。错误如下:

bundle stdout:无法验证 https://rails-assets.org/ 的 SSL 证书 您有可能遇到中间人攻击,但大多数 可能您的系统没有验证所需的 CA 证书

我们的 SSL 证书是几天前更新的,我们没有对应用程序进行任何更改。它开始突然抛出这个错误。

我们是否需要更新系统中的根证书?我的意思是像 运行ning sudo update-ca-certificates 之类的?这样做安全吗?

该应用程序在 digitalOcean 中,我们使用 capist运行o gem 来部署该应用程序

@lingYan 非常感谢你指引我正确的方向!我阅读了您发布的链接,但就我而言,我不得不稍微更改一下步骤,因为我不在 Centos-7 上。所以这正是我所做的:

在执行了上述所有步骤后它仍然抛出错误,所以我意识到我没有 ISRG 根 CA 证书。为了添加 ISRG Root CA,我做了以下操作(我认为这是不正确的,或者我可能遗漏了一些东西):

我是不是做错了什么?上述步骤是否正确添加新证书?我开始对此感到沮丧:(

我检查了 https://rails-assets.org/ 的证书,它是由 LetsEncrypt 签名的,LetsEncrypt 的根 CA 之一已过期,这就是导致您出现问题的原因。

了解问题:

https://www.openssl.org/blog/blog/2021/09/13/LetsEncryptRootCertExpire/ https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/

可能的解决方案: https://blog.devgenius.io/rhel-centos-7-fix-for-lets-encrypt-change-8af2de587fe4

基本上,如果这是原因,您需要删除 DST 根 CA 并确保 ISRG 根 CA 在您的证书存储中。

对于ubuntu或Debian系统,以下文档介绍了如何更新证书: /usr/share/doc/ca-certificates/README.Debian

  1. 运行 以下命令为您自己的受信任 ca 证书创建一个目录: sudo mkdir /usr/local/share/ca-certificates/extra
  2. 将根证书复制到新目录: sudo cp rootCA.crt /usr/local/share/ca-certificates/extra/ 确保证书文件具有 .crt 扩展名。
  3. 运行执行以下命令更新系统证书: sudo update-ca-certificates