WSL Ubuntu 16.04下bundle install遇SSL证书验证失败求助
解决Ruby 1.8.7 + Rails 2.3.10下bundle install的SSL证书验证失败问题
根据你的环境(WSL Ubuntu 16.04、Ruby 1.8.7、Rails 2.3.10、OpenSSL 1.0.2t),你遇到的SSL证书验证问题核心是旧版本Ruby/Bundler与rubygems.org更新后的SSL证书不兼容,以下是针对你情况的针对性解决方案:
方案1:使用兼容Ruby 1.8.7的旧版Bundler
Ruby 1.8.7完全不支持2.x及以上版本的Bundler,默认安装的高版本Bundler会导致SSL处理逻辑异常:
- 先安装适配的旧版Bundler:
gem install bundler -v 1.17.3 - 再用指定版本的Bundler执行安装:
bundle _1.17.3_ install
方案2:手动指定CA证书路径
Ubuntu 16.04的系统CA证书可能无法被Ruby 1.8.7的老旧SSL库正确识别,通过环境变量强制指定证书文件:
export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt bundle install
如果系统证书仍无效,可以下载独立的CA证书包并指定:
# 用HTTP方式下载避免SSL拦截问题 curl -O http://curl.se/ca/cacert.pem # 设置环境变量指向下载的证书文件 export SSL_CERT_FILE=$PWD/cacert.pem bundle install
方案3:切换到兼容旧Ruby的gem源
rubygems.org的HTTPS连接对Ruby 1.8.7这类古董版本支持极差,可以尝试切换到国内的HTTP源:
- 修改你的Gemfile,将原有source替换为:
source 'http://gems.ruby-china.com' - 然后执行安装:
bundle install
额外提示
Ruby 1.8.7和Rails 2.3.10都是停止维护多年的版本,不仅存在严重安全漏洞,还会持续遇到这类兼容性问题。如果业务允许,建议逐步升级到更高版本的Ruby和Rails,从根本上解决这类问题。
内容的提问来源于stack exchange,提问作者R Guy
相关产品推荐
相关产品推荐

