我有一个 ruby on rails 应用程序,当我尝试运行捆绑安装时抛出错误。错误如下:
捆绑标准输出:无法验证https://rails-assets.org/的 SSL 证书您有可能遇到中间人攻击,但很可能您的系统没有所需的 CA 证书用于验证
我们的 SSL 证书在几天前刚刚更新,我们没有更改应用程序中的任何内容。它开始突然抛出这个错误。
我们是否需要更新系统中的根证书?我的意思是像运行 sudo update-ca-certificates 或类似的东西?这样做安全吗?
该应用程序位于 digitalOcean 中,我们使用 capistrano gem 来部署该应用程序
@lingYan 非常感谢您指引我正确的方向!我阅读了您发布的链接,但就我而言,我不得不稍微更改步骤,因为我不在 Centos-7 上。所以这正是我所做的:
在 /etc/ssl/certs 中备份了证书文件:
cp ca-certificates.crt ~/certificatesBackup/ca-certificates-backup.crt
在 /etc 中备份了配置文件:
cp ca-certificates.conf ~/certificatesBackup/ca-certificates-backup.conf
在 /etc/ssl/certs 中备份了过期证书:
cp DST_Root_CA_X3.pem ~/certificatesBackup/DST_Root_CA_X3_backup.pem
从 ca-certificates.conf 中删除了 DST_Root_CA_X3.pem:
我用 vim 打开文件并删除了该行
删除了 /etc/ssl/certs 中的过期证书:
sudo rm DST_Root_CA_X3.pem
更新的证书:
更新 CA 证书 -f -v
检查是否已从 ca-certificates.crt 中的链中删除过期证书:
diff ~/certificatesBackup/ca-certificates-backup.crt ca-certificates.crt
它显示了新证书
完成上述所有步骤后它仍然抛出错误,所以我意识到我没有 ISRG 根 CA 证书。为了添加 ISRG 根 CA,我执行了以下操作(我认为这是不正确的,或者我可能遗漏了一些东西):
- 转到此页面https://letsencrypt.org/certificates/并下载名为 ISRG Root X1 的文件(自签名/pem 格式)
- 去 /usr/local/share/ca-certificates/
- 创建了一个名为 isrgrootx1 的新文件夹
- 将我之前下载的pem文件复制到isrgrootx1文件夹中
- 确保权限正常(文件夹为 755,文件为 644)
- 使用 update-ca-certificates -f -v 更新证书
- 检查是否使用 diff 命令添加了证书:当我运行 diff 命令时,它没有显示任何更改,所以我猜证书没有添加并且错误仍然存在
我做错了吗?上述步骤是否正确添加新证书?我开始对此感到沮丧:(