我已经使用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
答案 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
希望有所帮助!