¿Cómo manejo los certificados usando cURL mientras intento acceder a una URL HTTPS?
Recibo el siguiente error al usar curl:
curl: (77) error al configurar las ubicaciones de verificación del certificado: Archivo CA: /etc/ssl/certs/ca-certificates.crt CApath: ninguno
¿Cómo configuro las ubicaciones de verificación de este certificado?
También tenía instalada la versión más reciente de ca-certificates pero seguía apareciendo el error:
curl: (77) error setting certificate verify locations:
CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
El problema era que curl esperaba que el certificado estuviera en la ruta /etc/pki/tls/certs/ca-bundle.crt
pero no podía encontrarlo porque estaba en la ruta /etc/ssl/certs/ca-certificates.crt
.
Copiando mi certificado al destino esperado ejecutando
sudo cp /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt
trabajó para mi. Deberá crear carpetas para el destino de destino si no existen ejecutando
sudo mkdir -p /etc/pki/tls/certs
Si es necesario, modifique el comando anterior para que el nombre del archivo de destino coincida con la ruta esperada por curl, es decir, reemplácelo /etc/pki/tls/certs/ca-bundle.crt
con la ruta que sigue a "CAfile:" en su mensaje de error.
Este error está relacionado con un paquete faltante : ca-certificates
. Instalarlo.
En Ubuntu Linux (y distribuciones similares):
# apt-get install ca-certificates
En CygWin a través de Apt-Cyg
# apt-cyg install ca-certificates
En Arch Linux (Raspberry Pi)
# pacman -S ca-certificates
La documentación dice:
Este paquete incluye archivos PEM de certificados CA para permitir que las aplicaciones basadas en SSL verifiquen la autenticidad de las conexiones SSL.
Como se ve en: Debian - Detalles del paquete ca-certificates en squeeze
Pon esto en tu.bashrc
# fix CURL certificates path
export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
(ver comentario de Robert)
Crea un archivo ~/.curlrc
con el siguiente contenido.
cacert=/etc/ssl/certs/ca-certificates.crt
como sigue
echo "cacert=/etc/ssl/certs/ca-certificates.crt" >> ~/.curlrc