Gem安装时出现SSL证书错误

时间:2014-11-05 20:22:46

标签: ruby gem rubygems chef

我已经使用https设置了宝石仓库。我们有内部证书,我有歌手/信托证书。

但是在哪里安装那些pem文件我不确定,因此在尝试进行gem安装时遇到ssl错误

我们正在使用CHEF,因此使用ruby作为chef client install的一部分安装。

通过网络搜索了唯一的aswer人是一种解决方法,即从https更改为http,但我希望使用HTTPS设置gem repo(端口443)

以下是我得到的错误

[root@opslx0005 ~]# /opt/chef/embedded/bin/gem install lvm
ERROR:  Could not find a valid gem 'lvm' (>= 0) in any repository
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://myself.mydomain.com/artifactory/simple/infra-automation/gem-repo/latest_specs.4.8.gz)

尝试使用Ruby remote_fetcher进行测试

/opt/chef/embedded/bin/ruby -rrubygems/remote_fetcher -e 'p Gem::RemoteFetcher.new.fetch_http(URI.parse("https://myself.mydomain.com/artifactory/simple/infra-automation/gem-repo/latest_specs.4.8.gz")).bytesize'

更新:

在网上找到这个,这是我默认的pem文件,在这里更新了证书,但错误仍未发生

/opt/chef/embedded/bin/ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE'
/opt/chef/embedded/ssl/cert.pem

3 个答案:

答案 0 :(得分:2)

最简单的解决方案可能只是将SSL_CERT_FILE环境变量设置为CA证书文件。这应该由Ruby的OpenSSL层自动获取。

答案 1 :(得分:1)

从这里开始:SSL Error During Gem Installation (on MinGW64-MSys2)

尝试下载http://curl.haxx.se/ca/cacert.pem证书。然后,将一个特殊的环境变量指向它:export SSL_CERT_FILE=~/cacert.pem之后,发出更新命令:gem update --system之后问题应该解决。重新启动控制台并继续工作。

答案 2 :(得分:0)

我有同样的问题,认为这是公司代理,但我只需要更新rubygems。 您可能需要从https://github.com/rubygems/rubygems/releases/

下载最新版本

将其复制到ruby gems文件夹 然后在cmd上

C:\>gem install --local C:\rubygems-update-1.8.30.gem
C:\>update_rubygems --no-ri --no-rdoc

希望有所帮助!