260 votes

Comment gérer les certificats en utilisant cURL tout en essayant d'accéder à une url HTTPS ?

J'obtiens l'erreur suivante en utilisant curl :

curl: (77) error setting certificate verify locations:
  CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: none

Comment définir les emplacements de vérification de ce certificat ?

167voto

Scott Emmons Points 17

J'ai également installé la dernière version de ca-certificates, mais j'ai toujours obtenu l'erreur :

curl: (77) error setting certificate verify locations:
  CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none

Le problème est que curl s'attend à ce que le certificat se trouve au chemin d'accès /etc/pki/tls/certs/ca-bundle.crt mais n'a pas pu le trouver car il se trouvait sur le chemin /etc/ssl/certs/ca-certificates.crt .

Copier mon certificat vers la destination prévue en exécutant

sudo cp /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt

a fonctionné pour moi. Vous devrez créer des dossiers pour la destination cible s'ils n'existent pas en lançant

sudo mkdir -p /etc/pki/tls/certs

Si nécessaire, modifiez la commande ci-dessus pour que le nom du fichier de destination corresponde au chemin attendu par curl, c'est-à-dire remplacez /etc/pki/tls/certs/ca-bundle.crt avec le chemin qui suit "CAfile :" dans votre message d'erreur.

132voto

Rubens Mariuzzo Points 6022

Cette erreur est liée à une paquet manquant : ca-certificates . Installez-le.

Dans Ubuntu Linux (et autres distributions similaires) :

# apt-get install ca-certificates

Dans CygWin via Apt-Cyg

# apt-cyg install ca-certificates

Dans Arch Linux (Raspberry Pi)

# pacman -S ca-certificates

La documentation l'indique :

Ce paquet comprend des fichiers PEM de certificats d'autorité de certification pour permettre aux applications basées sur SSL de vérifier l'authenticité des connexions SSL.

Tel que vu sur : Debian -- Détails du paquet ca-certificates dans squeeze

104voto

Yauhen Yakimovich Points 2222

Mettez ceci dans votre .bashrc

# fix CURL certificates path
export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt

(voir le commentaire de Robert)

37voto

prabeesh Points 784

Créer un fichier ~/.curlrc avec le contenu suivant

cacert=/etc/ssl/certs/ca-certificates.crt

comme suit

echo "cacert=/etc/ssl/certs/ca-certificates.crt" >> ~/.curlrc

20voto

10gistic Points 184

Le moyen le plus rapide de contourner l'erreur est d'ajouter l'option -k quelque part dans votre requête curl. Cette option "autorise les connexions aux sites SSL sans certificat". (extrait de curl --help)

Sachez que cela peut signifier que vous ne parlez pas au point de terminaison que vous pensez être, car il présente un certificat qui n'est pas signé par une autorité de certification en laquelle vous avez confiance.

Par exemple :

$ curl -o /usr/bin/apt-cyg https://raw.github.com/cfg/apt-cyg/master/apt-cyg

m'a donné la réponse d'erreur suivante :

curl: (77) error setting certificate verify locations:
  CAfile: /usr/ssl/certs/ca-bundle.crt
  CApath: none

J'ai ajouté -k :

curl -o /usr/bin/apt-cyg https://raw.github.com/cfg/apt-cyg/master/apt-cyg -k

et aucun message d'erreur. En prime, j'ai maintenant installé apt-cyg. Et ca-certificats.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X