curl中--cacert和--capath之间的区别?

Jé *_*eue 25 ssl curl ssl-certificate

什么时候会使用--cacert选项与(CLI)中的--capath选项curl.

--cacert似乎引用包含多个PEM的单片文件.假设它扫描一下,找到匹配的主机名?

--capath似乎引用了多个文件所在的目录.卷曲是否将相应的证书作为文件名取出?

Phi*_*ilR 27

来自文档:

--cacert(HTTPS)告诉curl使用指定的证书文件来验证对等方.该文件可能包含多个CA证书.证书必须采用PEM格式.如果多次使用此选项,将使用最后一个选项.

--capath(HTTPS)告诉curl使用指定的证书目录来验证对等方.证书必须是PEM格式,并且必须使用openssl提供的c_rehash实用程序处理该目录.Windows下不支持证书目录(因为c_rehash使用符号链接来创建它们).如果--cacert文件包含许多CA证书,则使用--capath可以允许curl比使用--cacert更有效地建立https连接.如果多次使用此选项,将使用最后一个选项.

因此,如果指定--cacert,则CA证书将存储在指定的文件中.这些CA证书用于验证cURL连接到的远程服务器的证书.

--capath选项用于指定包含CA证书而不是单个文件的目录.应使用c_rehash实用程序来准备目录,即创建必要的链接.如果您有许多CA证书,使用--capath的主要好处似乎是它比--cacert单文件方法更有效.

这是一个可能执行c_rehash功能的脚本:

for file in *.pem; do ln -s $file `openssl x509 -hash -noout -in $file`.0; done
Run Code Online (Sandbox Code Playgroud)

使用这两个选项时,您应该小心只包含您信任的CA的CA证书.例如,如果您知道远程服务器应始终使用YourCompanyCA的证书颁发,那么这是您应该包含的唯一CA证书.

  • @Xepoch是的,我认为它会使用每个证书的主题名称的哈希值创建文件,然后将这些哈希文件链接回原始证书。这使得查找速度更快。我添加了一个小脚本,它可能执行 c_rehash 的操作,以便使其更清晰。 (2认同)