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 ?

7voto

ShrimpPhaser Points 772

J'ai eu exactement le même problème. Il s'avère que mon /etc/ssl/certs/ca-certificates.crt était malformé. La dernière entrée ressemblait à ceci :

-----BEGIN CERTIFICATE-----
MIIEDTCCAvWgAwIBAgIJAN..lots of certificate text....AwIBAgIJAN-----END CERTIFICATE-----

Après avoir ajouté une nouvelle ligne avant -----END CERTIFICATE----- curl a pu traiter le fichier de certificats.

C'était très ennuyeux à découvrir, car mon update-ca-certificates Le commandement ne m'a pas prévenu.

Il peut s'agir ou non d'un problème spécifique à une version de curl, voici donc ma version, par souci d'exhaustivité :

curl --version
# curl 7.51.0 (x86_64-alpine-linux-musl) libcurl/7.51.0 OpenSSL/1.0.2j zlib/1.2.8 libssh2/1.7.0
# Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp 
# Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets

5voto

meda Points 11955

Curl effectue SSL la vérification des certificats par défaut, en utilisant un "paquet" de certificats. de Certificate Authority (CA) les clés publiques (CA certs). Le paquet est nommé curl-ca-bundle.crt ; à l'aide de l'option --cacert.

Si cette HTTPS utilise un certificat signé par une autorité de certification représentée dans le fichier la liasse, la vérification du certificat a probablement échoué en raison d'un problème avec le certificat (il peut avoir expiré, ou le nom peut ne pas correspondre au nom de domaine dans l'UR). ne correspond pas au nom de domaine dans l'URL).

Si vous souhaitez désactiver la vérification du certificat par curl, utilisez l'option -k (ou --insecure ).

par exemple

curl --insecure http://........

5voto

Kwame Yeboah Points 79

Ceci a fonctionné pour moi

sudo apt-get install ca-certificates

puis aller dans le dossier des certificats à l'adresse

sudo cd /etc/ssl/certs

puis vous copiez le fichier ca-certificates.crt dans le répertoire /etc/pki/tls/certs

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

s'il n'y a pas de dossier tls/certs : créez-en un et modifiez les permissions en utilisant chmod 777 -R folderNAME

3voto

Daniel Stenberg Points 9116

Il semble que votre curl pointe vers un fichier inexistant contenant des certificats CA ou similaires.

Pour la référence principale sur les certificats CA avec curl, voir : https://curl.haxx.se/docs/sslcerts.html

3voto

Manu R S Points 51

Il suffit de créer les dossiers qui manquent dans votre système

/etc/pki/tls/certs/

et créez le fichier à l'aide de la commande suivante,

sudo apt-get install ca-certificates

puis copier et coller le certificat dans le dossier de destination, ce qui apparaît dans votre erreur le mien était " with message 'error setting certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none' in "Assurez-vous de coller le fichier à l'endroit exact mentionné dans l'erreur. Utilisez la commande suivante pour copier-coller

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

Fixe.

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