默认 CA 证书包位置

Sli*_*nky 35 ssl-certificate curl

我需要将 .pem 证书文件添加到我的默认 CA 证书包中,但我不知道默认的 CA 证书包保存在哪里。

我需要将我的新 .pem 文件附加到这个默认包中。我宁愿这样做也不愿使用 --capath 指定我自己的位置

cURL 清楚地知道在哪里查看,但我没有看到任何显示位置的 cURL 命令。是否有命令可以显示此位置?我怎样才能找到它?

根据 cURL:
将服务器的 CA 证书添加到现有的默认 CA 证书包中。可以通过使用 --with-ca-bundle 选项运行配置来更改使用的 CA 包的默认路径,该选项指出您选择的路径。

谢谢

Flu*_*lup 42

运行curlwithstrace可能会给你一个线索。

strace curl https://www.google.com |& grep open

很多输出,但就在接近尾声时,我看到:

打开(“/etc/ssl/certs/578d5c04.0”,O_RDONLY)= 4

/etc/ssl/certs/是我的证书存储的地方。

  • +1 向我展示了`strace`! (3认同)
  • 具有一级详细信息的卷曲会执行相同的操作,您不需要 strace。“curl -v https://example.com/ |& grep “CAfile”” (3认同)
  • 对于追随者来说,“|&”是“2>&1 |”的语法糖。@MerlinTheMagic 它需要一个 `https://example.com` 然后它就可以工作了,请参阅 Philip Rego 的回答评论。在 OS X 中使用“dtruss”是可能的 /sf/ask/2173190281/ 但可能不是准确的 https ://superuser.com/questions/247686/wheres-the-ca-cert-bundle-on-osx/247739#247739。它输出 `CAfile: /etc/ssl/cert.pem` 并且 dtruss 同意,但对于内置的curl 也可能另外使用系统密钥链中的 CA 根密钥(即根本不使用该文件) (3认同)

小智 20

curl 的“bin/”中应该有一个程序“curl-config”,即“curl”二进制文件所在的位置。

./curl-config --ca

给出 ca 包安装路径。

我刚刚做了一个 whatis curl-config: “获取有关 libcurl 安装的信息”,所以我想它只有在安装了 libcurl 时才可用,我认为这是标准的。

  • `curl-config` 程序并非适用于所有版本的程序或安装。例如,一些管理员可能不了解该程序的用途而不安装它,因为他们认为它只是一个构建配置工具。此外,如果需要该程序的用户不是系统管理员,他们将无法安装它。我可以访问两个系统,一个没有这个程序,另一个为 `curl-config --ca` 提供*无输出*。 (3认同)
  • 我必须在 Ubuntu 上安装一个软件包才能运行它(如果未安装,您将看到可用选项的列表),但使用此命令将我带到了正确的位置! (2认同)

Phi*_*ego 12

-vURL 中包含 https。

$ curl -v https://google.com
* Rebuilt URL to: https://google.com/
* timeout on name lookup is not supported
*   Trying 172.217.9.174...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to google.com (172.217.9.174) port 443 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   *CAfile: C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt*
Run Code Online (Sandbox Code Playgroud)

  • 稍微好一点的 `curl -v https://www.google.com 2>&1 | grep CApath`。 (2认同)

Cha*_*l P 11

我发现了一个简单的方法:用--cacert一个错误的文件名,输出将显示的路径。

例子:

~$ curl --cacert non_existing_file https://www.google.com
curl: (77) error setting certificate verify locations:
  CAfile: non_existing_file
  CApath: /etc/ssl/certs
Run Code Online (Sandbox Code Playgroud)

  • 我认为这看起来是一个很好的解决方案。但是,curl 给了我“77”错误,但没有提供附加信息。 (2认同)

BiG*_*oDy 5

Linux(Ubuntu、Debian)

将您的 CA 复制到目录 /usr/local/share/ca-certificates/

sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt
Run Code Online (Sandbox Code Playgroud)

更新 CA 存储

sudo update-ca-certificates
Run Code Online (Sandbox Code Playgroud)

删除您的 CA 并更新 CA 存储:

sudo update-ca-certificates --fresh
Run Code Online (Sandbox Code Playgroud)

Linux (CentOs 6)

安装 ca-certificates 包:

yum install ca-certificates
Run Code Online (Sandbox Code Playgroud)

启用动态 CA 配置功能:update-ca-trust force-enable 将其作为新文件添加到/etc/pki/ca-trust/source/anchors/

cp foo.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust extract
Run Code Online (Sandbox Code Playgroud)

Linux (CentOs 5)

将您的可信证书附加到文件中 /etc/pki/tls/certs/ca-bundle.crt

cat foo.crt >>/etc/pki/tls/certs/ca-bundle.crt
Run Code Online (Sandbox Code Playgroud)

https://manuals.gfi.com/en/kerio/connect/content/server-configuration/ssl-certificates/adding-trusted-root-certificates-to-the-server-1605.html非常好的链接,它解释了,如何将它添加到几个流行的操作系统中。