我所做的
这是来自终端的完整消息
ERROR: You must add /C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2 to your local trusted store
ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - hostname "rubygems.org" does not match the server certificate (https://rubygems.org/specs.4.8.gz)
ERROR: SSL verification error at depth 0: unable to get local issuer certificate (20)
我没有SSL的经验,但我遵循了一对夫妇的问题类似于我的,但没有运气
我尝试过的:
- 下载并安装新的SHA256中间证书
- 将主机名从https更改为http
- 按照此指南操作,但无法将GlobalSignRootCA.pem复制到ruby文件夹
- 使用HomeBrew,但在安装时出现另一个错误
7条答案
按热度按时间mv1qrgav1#
MichaelHuelsen有正确的答案。在这里我将给出我的一步一步的指示,为我工作,但覆盖pem文件与一个大的,所以要小心,如果这有敏感信息,你可能不想破坏。
1.标识证书文件。
告诉我证书文件在哪里。
1.备份证书文件
1.通过curl复制完整的证书文件
参见:https://curl.se/docs/caextract.html
1.移动新的cacert.pem文件以替换旧文件
然后,我运行
gem update --system
来更新内容,但是您运行原来的gem
命令可能就可以了。6xfqseft2#
我还建议仔细阅读错误消息。通常,Ruby证书库中的默认根CA(当然)会丢失证书链中的重要证书。例如,如果您位于(公司)代理之后。
由于Ruby依赖于openssl,因此需要找到cert文件的位置。
它输出ruby和gem正在使用的文件,在我使用Ruby 3.0的Windows 10的情况下,它看起来类似于以下内容:
pem是一个包含证书信息的纯文本文件。您需要下载并提供缺少的证书,然后将其添加到cert.pem文件中。
之后,您可以使用
gem install your_package
,而不会出现与之前丢失的证书相关的SSL问题。chy5wohz3#
要解决问题
从https://rubygems.org/pages/download下载(Windows为ZIP)
解压缩到一个目录并在其中安装cd:rb(你可能需要管理员/根权限)
它帮我解决了
5jvtdoz24#
尽管给出了解决方案,但最好还是深入问题的根源。您的系统缺少可信CA池中的AlphaSSL中间证书。您需要更新计算机上的可信CA根证书和中间证书。最好的来源之一是从Firefox中提取的curl's constantly updated CA certificate storage。否则,您可以手动导入证书。
yhxst69z5#
在Ubuntu 22.04上,我不得不遵循这个家伙写的修改脚本:https://deanpcmad.com/2022/installing-older-ruby-versions-on-ubuntu-22-04/
@MichaelHuelsen的回答给我指出了正确的方向,并向我透露了Dean安装中提供的预编译版本中有他的主路径。
所以我编译了自己的,经过一些调整,我可以在Ubuntu 22.04中安装旧版本的Ruby。
这可能是一个轻微的切线对这个问题,但尽管如此,希望它有助于任何人谁找到他们的方式在这里出于同样的原因。
我的安装说明版本:
ukqbszuj6#
对于我的情况:
错误
sudo gem install cocoapods
但错误:原因
旧源无效(签名?)
溶液
删除旧源,添加新的有效源
步数
注:
gem sources -l
可以检查电流源。
mefy6pfw7#
对我来说,我收到了一个类似的错误。它告诉我需要安装我公司的证书文件。查看SSL错误,找到
CN=
--我相信这是“证书名称”。我在Mac OS上,所以我打开“钥匙链访问”并导出证书。然后,为了找到ruby正在使用的证书的位置,我运行:
ruby -ropenssl -e 'p OpenSSL::X509::DEFAULT_CERT_FILE'
在通过自制程序安装了openssl的Mac OS上,这会产生:
/opt/homebrew/etc/openssl@1.1/cert.pem
当我查看这个文件时,我发现它实际上是另一个cert文件的符号链接,这是因为我使用的是
certifi
python库(以及pyenv
),在openssl@1.1
目录下运行l
会显示符号链接:cert.pem -> ../../../../Users/<USERNAME>/.pyenv/versions/3.10.4/lib/python3.10/site-packages/certifi/cacert.pem
在将我公司的证书连接到这个原始的证书文件之后,我安装了gem,我通过运行下面的命令(在
~/.pyenv/versions/3.10.4/lib/python3.10/site-packages/certifi/
目录中)完成了安装。cat ~/path/to/my/exported/cert/MyCompanyCert.pem cacert.pem > cacert.pem
这会将公司证书附加到现有证书文件的末尾。瞧,
gem install <package>
符合您的愿望。