【问题标题】:Where to put certificates cacert.pem for cURL?cURL 的证书 cacert.pem 放在哪里?
【发布时间】:2012-10-22 05:13:51
【问题描述】:

我正在尝试更新 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 再次运行 curl,我又遇到了同样的错误。

所以我想知道将我的 cacert.pem 文件放在哪里来替换 cURL 使用的文件?

我也尝试了其他技术: 创建一个包含 cacert = ~/cacert.pem 的 .curlrc 文件 但我得到一个错误: CA文件:cacert.pem CApath:/etc/ssl/certs

所以我尝试将我的 cacert.pem 复制到 /usr/share/ca-certificates/cacert.org 并在 /etc/ssl/certs 中创建了一个指向 /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 文件放在哪里?

【问题讨论】:

    标签: curl rvm ssl-certificate


    【解决方案1】:

    好的,我设法让它工作,但我对我的解决方案不太满意。

    我犯的第一个错误是 .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 文件。

    谷歌搜索更多,我发现了一些有用的信息herehere。 第一个参考有一个小错误: 当我阅读“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 文件。

    所以如果有人能指出我做错了什么,我将非常感激。

    【讨论】:

    • 当然,但使用证书的目的是确保安全。如果您使用“-k”参数。您将允许不安全的 SSL 连接。从手册页摘录:-k, --insecure (SSL) 此选项明确允许 curl 执行“不安全”的 SSL 连接和传输。
    • 是的,但如果您只关心完成它(我认为适用于大多数人),-k 是一个选项。
    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 2021-06-02
    • 2022-06-10
    • 2016-09-21
    • 2015-04-15
    • 2015-09-30
    • 1970-01-01
    • 2019-05-02
    相关资源
    最近更新 更多