Différence entre cacert et capath in curl?

quand utiliserait-on le --cacert vs --capath option curl (CLI).

--cacert semble renvoyer à un fichier monolithique qui contient plusieurs PEMs. Supposons qu'il scanne pour trouver le nom d'hôte correspondant?

--capath renvoie à un répertoire dans lequel plusieurs fichiers vivent. Est-ce que curl prend le certificat approprié comme nom de fichier?

19
demandé sur Jé Queue 2012-03-27 00:53:49

2 réponses

docs:

--cacert (HTTPS) dit à curl d'utiliser le fichier de certificat spécifié pour vérifier le Pair. Le fichier peut contenir plusieurs certificats D'AC. Le certificat(s) doit être au format PEM. Si cette option est utilisée plusieurs fois, le dernier qui sera utilisé.

-- capath (HTTPS) dit à curl d'utiliser le répertoire de certificats spécifié pour vérifier le Pair. Les certificats doivent être au format PEM, et les répertoire doit avoir été traité à l'aide de l'utilitaire c_rehash fourni avec openssl. Les répertoires de certificats ne sont pas pris en charge sous Windows (parce que c_rehash utilise les liens symbolink pour les créer). Utiliser -- capath peut permettre à curl de rendre les connexions https beaucoup plus efficaces que utiliser --cacert si le fichier --cacert contient de nombreux certificats de L'AC. Si cette option est utilisée plusieurs fois, le dernier qui sera utilisé.

donc, si vous spécifiez -- cacert, les certificats sont stockés dans le fichier spécifié fichier. Ces certificats de L'AC sont utilisés pour vérifier les certs des serveurs distants auxquels cURL se connecte.

l'option -- capath est utilisée pour spécifier un répertoire contenant les ca certs plutôt qu'un seul fichier. Le c_rehash utilitaire doit être utilisée pour préparer le répertoire c'est à dire, créer les liens nécessaires. Le principal avantage d'utiliser --capath semble être qu'il est plus efficace que le -- cacert single file approach si vous avez beaucoup de cas.

Voici un script qui fait probablement ce que fait c_rehash:

for file in *.pem; do ln -s $file `openssl x509 -hash -noout -in $file`.0; done

avec les deux options, vous devriez faire attention à n'inclure que les certs de CAs en qui vous avez confiance. Si, par exemple, vous savez que les serveurs distants devraient toujours être émis avec des certs de Votrecompagnie, alors c'est le seul cert que vous devriez inclure.

19
répondu PhilR 2016-10-24 11:42:11

sous Windows, vous pouvez exécuter ce qui suit en tant que fichier batch et passer dans le nom du dossier 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^>

Exemple:

c_rehash c:\cacerts
1
répondu Darrek 2018-02-16 00:00:02