簡體   English   中英

curl中--cacert和--capath之間的區別?

[英]Difference between --cacert and --capath in curl?

何時使用--cacert選項與curl--capath選項(CLI即可)。

--cacert似乎引用了包含多個PEM的單片文件。 假設它掃描一下,找到匹配的主機名?

--capath似乎引用了多個文件所在的目錄。 卷曲是否將適當的證書作為文件名取出?

來自文檔

--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

使用這兩個選項時,您應該小心只包含您信任的CA的CA證書。 例如,如果您知道遠程服務器應始終使用YourCompanyCA的證書頒發,那么這是您應該包含的唯一CA證書。

在Windows上,您可以將以下內容作為批處理文件運行並傳入capath文件夾名稱:

c_rehash.cmd:

@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^>

例:

c_rehash c:\cacerts

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM