with the que problem example cert ssl curl ssl-certificate

que - curl:(77) problem with the ssl ca cert(path? access rights?)



¿Diferencia entre--cacert y--capath en curl? (2)

De la docs :

--cacert (HTTPS) Le dice a curl que use el archivo de certificado especificado para verificar el par. El archivo puede contener múltiples certificados de CA. Los certificados deben estar en formato PEM. Si esta opción se usa varias veces, se usará la última.

--capath (HTTPS) Le dice a curl que use el directorio de certificado especificado para verificar el par. Los certificados deben estar en formato PEM, y el directorio debe haberse procesado utilizando la utilidad c_rehash suministrada con openssl. Los directorios de certificados no son compatibles con Windows (porque c_rehash usa enlaces de símbolos para crearlos). El uso de --capath puede permitir que Curl realice conexiones https de manera mucho más eficiente que usar --cacert si el archivo --cacert contiene muchos certificados de CA. Si esta opción se usa varias veces, se usará la última.

Por lo tanto, si especifica --cacert, los certificados CA se almacenan en el archivo especificado. Estos certificados de CA se utilizan para verificar los certificados de servidores remotos a los que se conecta cURL.

La opción --capath se usa para especificar un directorio que contiene los certificados CA en lugar de un solo archivo. La utilidad c_rehash se debe utilizar para preparar el directorio, es decir, crear los enlaces necesarios. El principal beneficio de usar --capath parece ser que es más eficiente que el enfoque de archivo único --cacert si tiene muchos certificados de CA.

Aquí hay un script que probablemente hace lo que hace c_rehash:

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

Con ambas opciones, debe tener cuidado de incluir solo certificados de CA de las CA en las que confía. Si, por ejemplo, sabe que los servidores remotos siempre deben recibir certificados de YourCompanyCA, entonces este es el único certificado de CA que debe incluir.

¿Cuándo se usaría la opción --cacert frente a la opción --capath dentro de curl (CLI?).

--cacert parece hacer referencia a un archivo monolítico que contiene varios PEM. ¿Asumir que se escanea para encontrar el nombre de host correspondiente?

--capath parece hacer referencia a un directorio en el que viven varios archivos. ¿Curl recoge el certificado apropiado como un nombre de archivo en él?


En Windows puede ejecutar lo siguiente como un archivo por lotes y pasar el nombre de la carpeta de 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^>

Ejemplo:

c_rehash c:/cacerts