windows下 Ruby使用国内https源时出现的ssl报错的解决办法

虽然不建议在windows环境下构建ruby,但是rubyinstaller必然有它存在的意义。在使用ruby时,最令人头疼的无疑是官方源被墙的问题,令人欣慰的是,Ruby-china的出现,为我们提供了免费实时的ruby源,在此对Ruby-china提出万分的感谢。

我们可以用https://gems.ruby-china.org/ 来替换官方的ruby源,命令如下图所示:

windows下 Ruby使用国内https源时出现的ssl报错的解决办法_第1张图片

但是在windows下使用ruby-china源的时候,会出现如下错误:

Ruby-china给出的解决方案是,使用http://协议替换https://即可解决问题。

但是,这并不是最好的解决办法,我也是被这个问题困扰了一段时间,于是决定找出解决方案并分享给大家。在网上可以见到的最常用的办法是下载cacert.pem (https://curl.haxx.se/ca/cacert.pem),放到指定文件夹(自己决定,并无强制要求),并在环境变量中添加变量SSL_CERT_FILE并将其值指定到cacert.pem文件。这种方式确实可以解决问题,但是好多评论回复此方式无效,其中原因有两个:

1.下载到cacert.pem文件到本地后,cacert.pem被系统锁定,需要查看其属性进行解锁,有点类似于chm文件的解锁。

2.通过Ctrl+s保存方式下载cacert.pem到本地后,浏览器在其内容首位自动添加了一些HTML内容,导致pem文件解析错误,把这些内容去掉即可解决问题,如下图:

windows下 Ruby使用国内https源时出现的ssl报错的解决办法_第2张图片

除了在环境变量中添加变量这种方式以外,还有一种更简便的方法,同样,下载cacert.pem文件,在C:\Ruby23\lib\ruby\site_ruby\2.3.0\rubygems\ssl_certs\中创建新的文件夹并命名为“gems.ruby-china.org”,最后把cacert.pem文件放入到该文件夹下,问题即可得到解决:

windows下 Ruby使用国内https源时出现的ssl报错的解决办法_第3张图片

相关解答地址:https://github.com/ruby-china/rubygems-mirror/issues/5


本文中对相关问题的解决办法均采集于网络,如有侵权请告知:[email protected]

未经本人允许,谢绝转载。


你可能感兴趣的:(Ruby,环境搭建)