alb*_*lbe 4 ruby macos ssl rubygems
我的环境是Mac OS 10.10.5,ruby版本2.2.4(或2.2.2或2.2.0)gem(升级后)是2.6.7,rvm版本1.27.0.
即使在最近几天,这也有几个重复,但这比我在评论中提供的信息更多.
在任何版本的ruby上安装任何宝石时,我得到以下内容:
$ gem install bundler
ERROR: Could not find a valid gem 'bundler' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
Run Code Online (Sandbox Code Playgroud)
有很多关于此的信息,特别是对于Windows上的问题.有关建议的解决方案,请参见http://guides.rubygems.org/ssl-certificate-update/.我遵循这一点,但我继续得到同样的错误.
问题似乎是将文件GlobalSignRootCA.pem放在适当的地方,这一点并不完全清楚.上面的链接解释了如何找到合适的ssl_certs目录,其中有2个在我的系统中,但都没有工作.
我忘了在哪里学到了以下内容:
$ ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_DIR'
/etc/openssl/certs
$ ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE'
/etc/openssl/cert.pem
Run Code Online (Sandbox Code Playgroud)
可能已经提示但是将.pem文件附加到后者或复制到前者没有任何效果.
当我重新安装openssl(自制软件)时,它有用地告诉我:
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
/usr/local/etc/openssl/certs
and run
/usr/local/opt/openssl/bin/c_rehash
Run Code Online (Sandbox Code Playgroud)
但这也没有解决问题.
来自另一个SO问题:
rvm osx-ssl-certs update all
Run Code Online (Sandbox Code Playgroud)
不起作用.也不是:
security find-certificate -a -p /Library/Keychains/System.keychain > "$cert_file"
security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain >> "$cert_file"
Run Code Online (Sandbox Code Playgroud)
有谁知道如何了解rubygems在这里的期望?它想要这个文件在哪里,或者甚至是它想要的文件?我应该将.pem文件导入OSX钥匙串吗?怎么做到这一点?
或者有没有办法获取gem文件并在本地安装?rubygems对rubygems本身有帮助,但对于我能说的单个宝石则没有.
- 解决方法
好的 - 关于从哪里获取gem的问题的答案:转到https://rubygems.org/gems/[package name]并选择一个版本并去下载 - 目前在右侧的链接下.下载文件和gem install --local [downloaded gem file].加上所有依赖项.
要自动化:
# start by adding insecure source for --explain - thanks to @tnum
gem source -a http://rubygems.org/
while read x
do
wget https://rubygems.org/downloads/$x.gem
gem install --local $x.gem
rm $x.gem
done < <(gem install --explain [package name] | grep "^ ")
# remove insecure source
gem source -r http://rubygems.org/
Run Code Online (Sandbox Code Playgroud)
更好的grep正则表达式可以缓解一些缺乏安全性的问题,但它仍然不安全.请注意,wget https://因为ssl问题肯定与rubygems有关.
小智 5
根据https://rvm.io/support/fixing-broken-ssl-certificates,上面的运行命令将解决您的问题:
rvm osx-ssl-certs update all
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1906 次 |
| 最近记录: |