使用 RubyInstaller for windows 遇到的 RubyGems 源的 SSL 证书问题

使用 RubyInstaller for windows 遇到的 RubyGems 源的 SSL 证书问题

2015,10,24

问题

如果不安装证书的话,

在 MSYS2 中,RubyGems 源无论是使用 https://ruby.taobao.org/ 或是 https://mirrors.ustc.edu.cn/rubygems/ 都会出现 SSL 证书问题:

zhangkaizhao@HUMAN-MYTH MINGW64 ~
$ gem sources -a https://mirrors.ustc.edu.cn/rubygems/
Error fetching https://mirrors.ustc.edu.cn/rubygems/:
       SSL_connect returned=1 errno=0 state=error: certificate verify failed (https://mirrors.ustc.edu.cn/rubygems/specs.4.8.gz)

在 Windows cmd 中的 RubyInstaller for windows 的 RubyGems 源也一样:

C:\Users\zhangkaizhao>gem sources -a https://mirrors.ustc.edu.cn/rubygems/
Error fetching https://mirrors.ustc.edu.cn/rubygems/:
       SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://mirrors.ustc.edu.cn/rubygems/specs.4.8.gz)

解决方法

MSYS2

在 MSYS2 中,可以像在 Arch Linux 里一样,通过各自安装这些包:

  • msys/ca-certificates: 用于 msys2

    $ pacman -S msys/ca-certificates

  • mingw32/mingw-w64-i686-ca-certificates: 用于 mingw32

    $ pacman -S mingw32/mingw-w64-i686-ca-certificates

  • mingw64/mingw-w64-x86_64-ca-certificates: 用于 mingw64

    $ pacman -S mingw64/mingw-w64-x86_64-ca-certificates

结果,比如对于 mingw64 :

zhangkaizhao@HUMAN-MYTH MINGW64 ~
$ gem sources -a https://mirrors.ustc.edu.cn/rubygems/
https://mirrors.ustc.edu.cn/rubygems/ added to sources

RubyInstaller for windows

而对于 RubyInstaller for windows 呢?参考这个: http://stackoverflow.com/a/27298259/3449199

先找到 RubyGems 的位置:

C:\Users\zhangkaizhao>gem which rubygems
C:/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rubygems.rb

然后直接将 MSYS2 里的 SSL 证书 pem 文件复制过去即可,比如复制 mingw64 里的:

zhangkaizhao@HUMAN-MYTH MINGW64 ~
$ cp /mingw64/ssl/cert.pem /c/Ruby22-x64/lib/ruby/site_ruby/2.2.0/rubygems/ssl_certs/mingw64_cert.pem

结果:

C:\Users\zhangkaizhao>gem sources -a https://mirrors.ustc.edu.cn/rubygems/
https://mirrors.ustc.edu.cn/rubygems/ added to sources

Comments

Comment is disabled by administrator.