首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >--cacert和--capath在curl中的区别?

--cacert和--capath在curl中的区别?
EN

Stack Overflow用户
提问于 2012-03-27 04:53:49
回答 2查看 102.9K关注 0票数 40

什么时候可以使用--cacert选项,而不是curl中的--capath选项。

--cacert似乎引用了一个包含多个PEM的整体文件。假设它会扫描以找到匹配的主机名?

--capath似乎引用了多个文件所在的目录。curl是否会选取适当的证书作为其中的文件名?

EN

回答 2

Stack Overflow用户

发布于 2012-03-27 05:36:53

docs

--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所做的事情:

代码语言:javascript
运行
复制
for file in *.pem; do ln -s $file `openssl x509 -hash -noout -in $file`.0; done

使用这两个选项时,应注意仅包含来自您信任的CA的CA证书。例如,如果您知道远程服务器应始终使用来自YourCompanyCA的证书颁发,则这是您应该包括的唯一CA证书。

票数 42
EN

Stack Overflow用户

发布于 2018-02-16 08:00:03

在Windows上,您可以将以下内容作为批处理文件运行,并传入capath文件夹名称:

c_rehash.cmd:

代码语言:javascript
运行
复制
@echo off
setlocal enableextensions enabledelayedexpansion
if \%1\ EQU \\ goto :usage
pushd %1
if NOT ERRORLEVEL 0 goto :usage
del *.0
for %%I in (*.pem) do call :hash %%I
popd
goto :eof
:hash
for /F "usebackq" %%J in (`openssl x509 -in %1 -hash -noout`) do mklink %%J.0 %1
goto :eof
:usage
echo Usage:
echo.
echo Rehash a folder of x509 Certificates for Curl
echo.
echo %~n0 ^<Folder^>

示例:

代码语言:javascript
运行
复制
c_rehash c:\cacerts
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9879688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档