You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下bundle install遇SSL证书验证失败,如何指定OpenSSL版本?

解决Bundler SSL证书验证失败问题

能否在bundle install时指定OpenSSL版本?

不能直接在bundle install命令中指定OpenSSL版本,但可以通过确保Ruby解释器基于目标OpenSSL版本编译,让Bundler间接使用该版本的OpenSSL。你给出的RVM安装命令就是正确的实现方式:

rvm install 2.7.6 --with-openssl-dir=$HOME/.rvm/usr --autolibs=disable

执行该命令后,Ruby会绑定指定路径下的OpenSSL库,后续bundle install会自动使用这个版本的OpenSSL完成SSL验证流程。

解决Bundler::Fetcher::CertificateFailureError的具体方法

1. 确认当前Ruby绑定的OpenSSL版本

先检查Ruby正在使用的OpenSSL版本是否符合需求:

ruby -r openssl -e 'puts OpenSSL::OPENSSL_VERSION'

若版本过低或不是预期版本,重新用RVM编译Ruby(使用你提供的指定OpenSSL路径的命令)。

2. 修复系统CA证书

多数SSL验证失败源于系统缺少必要的根CA证书:

  • Debian/Ubuntu系统:
    sudo apt update && sudo apt install ca-certificates
    sudo update-ca-certificates
    
  • RHEL/CentOS系统:
    sudo yum install ca-certificates
    sudo update-ca-trust
    

3. 为Bundler指定CA证书路径

如果系统证书仍无法完成验证,可以手动指定Bundler使用的CA证书文件或目录:

# 指定证书文件
export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
# 或者指定证书目录
export SSL_CERT_DIR=/etc/ssl/certs

# 执行bundle install
bundle install --jobs=$(nproc) --retry=5

4. 手动信任目标源的证书

如果仅https://enterprise.contribsys.com/的证书无法被验证,可手动导出并信任该证书:

  1. 导出网站证书:
    openssl s_client -connect enterprise.contribsys.com:443 -showcerts < /dev/null | sed -n '/-----BEGIN CERTIFICATE-----/,/-----END CERTIFICATE-----/p' > contribsys.crt
    
  2. 将证书添加到系统信任库:
    • Debian/Ubuntu:
      sudo cp contribsys.crt /usr/local/share/ca-certificates/
      sudo update-ca-certificates
      
    • RHEL/CentOS:
      sudo cp contribsys.crt /etc/pki/ca-trust/source/anchors/
      sudo update-ca-trust
      

5. 临时绕过SSL验证(不推荐)

如果以上方法均无效,且处于紧急测试场景,可临时关闭SSL验证(存在安全风险,仅用于临时排查):

BUNDLE_SSL_VERIFY=false bundle install --jobs=$(nproc) --retry=5

内容的提问来源于stack exchange,提问作者htamayo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 11:36:14