Windows 10下Ruby 2.4.1无法通过Sophos防火墙更新Gems,求配置方法
解决Ruby Gem在企业Sophos防火墙下的SSL证书验证问题
没问题,这个场景在企业环境里太常见了——你已经在IE装了根证书,但Ruby的Gem系统用的是独立的SSL证书存储(尤其是2.4.x这类较旧的Ruby版本),所以得单独给Gem做配置,完全可行,具体操作步骤如下:
第一步:导出Sophos根证书到本地
首先得把你已经在IE里安装的Sophos根证书导成Gem能识别的格式:
- 打开Internet Explorer,点击右上角设置图标 → 选择「Internet选项」
- 切换到「内容」标签页,点击「证书」按钮
- 在「受信任的根证书颁发机构」标签里,找到报错里提到的那个Sophos证书(名称是
Sophos SSL CA_C22017KYFKPJ462) - 选中它后点击「导出」,按照向导选择「Base64编码的X.509(.CER)」格式,把证书保存到Ruby安装目录下的
ssl/certs文件夹(比如C:\Ruby24\ssl\certs\sophos_root.cer,如果这个文件夹不存在就手动新建)
第二步:配置Gem使用该证书
有两种方式,选适合你的:
方式一:临时单次生效
每次运行Gem命令时手动指定证书参数,比如更新系统的命令改成:
gem update --system --trust-policy LowSecurity --ssl-ca-cert C:\Ruby24\ssl\certs\sophos_root.cer
这里--trust-policy LowSecurity是因为自签名证书不符合Gem默认的严格验证策略,结合指定我们信任的CA证书,安全性是有保障的。
方式二:永久生效(推荐)
修改Gem的配置文件,以后所有Gem命令都会自动用这个证书:
- 打开用户目录下的
.gemrc文件(路径是C:\Users\你的用户名\.gemrc,如果没有就新建一个文本文件,重命名为.gemrc注意前面的点) - 在文件里添加以下内容:
ssl_ca_cert: C:\Ruby24\ssl\certs\sophos_root.cer trust_policy: LowSecurity
- 保存文件后,再运行
gem update --system就不会再报SSL错误了。
验证配置
配置完成后,你可以试试运行gem list或者gem update,如果能正常拉取源的信息,就说明配置成功了。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

