默认CA Cert捆绑包位置


18

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

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

cURL清楚地知道在哪里寻找,但是我看不到任何显示该位置的cURL命令。是否有将显示此位置的命令?我如何找到它?

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

谢谢


您使用什么操作系统?
Cristian Ciupitu

Answers:


20

运行curlstrace可能给你一个线索。

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

输出很多,但是到最后我看到:

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

我的证书存储在哪里。


2
+1向我展示strace
罗伯特·邓登

strace显然在macOS上不可用。“等价” dtruss告诉我“ dtrace:无法初始化dtrace:DTrace需要其他特权”。所以我用sudo它。它回答为“ dtrace:无法执行curl:dtrace无法控制使用受限权利签名的可执行文件”。不是很有帮助。
LS

17

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

./curl-config --ca

给出ca bundle安装路径。

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


1
我必须在Ubuntu上安装一个软件包才能运行它(如果未安装,将显示可用选项的列表),但是使用此命令将我带到正确的位置!
罗伯特·邓登

2
curl-config程序不适用于该程序的所有版本或安装。例如,某些管理员可能不了解该程序的用途,因此未安装该程序,因为他们认为这只是一个构建配置工具。此外,如果需要该程序的用户不是系统管理员,则无法安装该程序。我有机会获得两个系统,一个没有这个程序,其他的给没有输出curl-config --ca
LS

与已接受的答案相比,我更喜欢此答案- strace无需使用它来查找配置信息。
肯·威廉姆斯

7

我发现了一个简单的方法:用--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

我认为这看起来是个不错的解决方案。但是,curl给了我“ 77”错误,但没有提供其他信息。
LS

@LS尝试添加详细标志:-v或--verbose
Chananel P

2

Linux(Ubuntu,Debian)

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

sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt

更新CA商店

sudo update-ca-certificates

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

sudo update-ca-certificates --fresh

Linux(CentOs 6)

安装ca-certificates软件包:

yum install ca-certificates

启用动态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

Linux(CentOs 5)

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

cat foo.crt >>/etc/pki/tls/certs/ca-bundle.crt

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


虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
杰拉尔德·施耐德

@GeraldSchneider>您已读评论并采取了行动;)
BiG_NoBoDy

1

您可以从curl的创建者haxx.se下载CA Root证书捆绑包。然后只需将证书附加到他们的.pem中,并在使用带有curl的--cacert选项时引用它即可


1

-v 网址中带有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*

不。对于我来说,它没有显示出任何类似的东西。实际上,我将其输出与添加-k选项的另一个运行进行了比较,以查看是否存在差异。没有区别。
LS

@LS您的网址中是否有https?
菲利普·雷哥

0

默认的CA Bundle位置取决于操作系统。在RHEL5上,它位于/etc/pki/tls/certs/ca-bundle.pem中。在其他版本的Linux或非Linux操作系统上,它可能位于不同的位置。


所以我想我只是搜索那个文件……
Slinky 2013年

2
另一个想法:#字符串/usr/lib64/libcurl.so.3 | egrep'^ /'/etc/pki/tls/certs/ca-bundle.crt
offby1 2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.