我正在尝试在Debian服务器上更新rvm:
rvm get stable
但我得到了以下错误:
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here : http://curl.haxx.se/docs/sslcerts.html
我大约5个月前安装了这台服务器,一切正常,但似乎https://rvm.io
证书上的内容发生了变化所以我设法下载了一个新的捆绑证书(我的用户目录中的cacert.pem):
wget http://curl.haxx.se/ca/cacert.pem
尝试使用official doc所说的不同命令,但可以选择使用证书文件:
\curl --cacert ./cacert.pem -L https://get.rvm.io | bash -s stable # update to stable
事情有点向前发展。不幸的是,rvm在安装过程中再次运行卷曲,我再次遇到同样的错误。
所以我想知道在哪里放置我的cacert.pem文件来替换cURL使用的文件?
我也试过其他技术: 创建一个包含cacert =〜/ cacert.pem的.curlrc文件 但是我收到一个错误: CAfile:cacert.pem CApath:/ etc / ssl / certs
所以我试图在/usr/share/ca-certificates/cacert.org中复制我的cacert.pem 并在/ etc / ssl / certs中创建了一个sym链接,指向/usr/share/ca-certificates/cacert.org/cacert.pem
但是,当我
rvm get stable
我收到了错误:
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here : http://curl.haxx.se/docs/sslcerts.html
我也在下面尝试了这个,但没有不同的结果:
sudo update-ca-certificates -f
所以我想知道在哪里放我的cacert.pem文件?
答案 0 :(得分:4)
好的,我设法使其有效,但我对我的解决方案并不满意。
我犯的第一个错误是.curlrc文件中的指令不正确。 我们应该像指定“curl”命令的选项一样使用此文件。 所以我删除了“等号”:
cacert /home/user_me/cacert.pem
通过这个,我能够使命令的第一部分工作:
\curl -L https://get.rvm.io | bash -s stable
bash部分仍然失败,因为rvm在root模式下再次使用curl。
所以我将 .curlrc 文件复制到 / root 文件夹中。
它有效! 我甚至可以调用标准的rvm命令:
rvm get stable
但是这有点棘手,我更喜欢curl使用我的cacert.pem文件,而没有所有那些.curlrc文件。
通过Google搜索,我找到了一些有用的信息here和here。 第一个引用有一点错误: 当我阅读“sudo update-ca-certificates --fresh”命令的手册页时,我意识到那个人把他的档案放在错误的地方。
您必须将证书放入 / usr / share / ca-certificates 文件夹而不是/ usr / local / share / ca-certificates,然后将证书的一行附加到配置中文件 /etc/ca-certificates.conf (例如,“my_ca.crt”)。 然后你可以运行你的“sudo update-ca-certificates --fresh”命令。
注意:如果您将证书复制到 / usr / local / share / ca-certificates ,则不再需要修改/etc/ca-certificates.conf配置文件也不运行“sudo update-ca-certificates --fresh”命令。
但是在我的情况下,对于第一个解决方案(/ usr / share / ca-certificates),当我运行“sudo update-ca-certificates --fresh”命令时出现错误。 作为第二个解决方案,我尝试将我的证书放入/ usr / local / share / ca-certificates。但它没有用。
所以我放弃了,我保留了两个.curlrc文件。
所以,如果有人能指出我做错了什么,我将非常感激。