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

j'obtiens l'erreur suivante en utilisant https://over.wiki/curl/" class="blnk">curl:

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

comment configurer ce certificat pour vérifier les emplacements? Grâce.

149
demandé sur Josh 2010-07-01 23:08:32

18 réponses

cette erreur est liée à un colis manquant : ca-certificates . L'installer.

dans Ubuntu Linux (et distribution similaire):

# apt-get install ca-certificates

in CygWin via Apt-Cyg

# apt-cyg install ca-certificates

In Arch Linux (Raspberry Pi)

# pacman -S ca-certificates

la documentation dit:

ce paquet inclut les fichiers PEM des certificats de L'AC pour permettre aux applications basées sur SSL de vérifier l'authenticité des connexions SSL.

Comme Vu à: Debian -- détails du paquet ca-certificats dans squeeze

51
répondu Rubens Mariuzzo 2017-02-14 18:09:21

j'ai aussi fait installer la plus récente version de CA-certificats, mais j'ai quand même eu l'erreur:

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

la question était que curl s'attendait à ce que le certificat soit à la voie /etc/pki/tls/certs/ca-bundle.crt mais ne pouvait pas le trouver parce qu'il était à la voie /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

travaillait pour moi. Vous aurez besoin de créer des dossiers pour la destination cible s'ils n'existent pas en exécutant

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 prévu par curl, c.-à-d. remplacer /etc/pki/tls/certs/ca-bundle.crt par le chemin suivant" CAfile: "dans votre message d'erreur.

136
répondu Scott Emmons 2015-05-20 13:53:32

mettez ceci dans votre .bashrc

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

(voir le commentaire de Robert)

72
répondu Yauhen Yakimovich 2015-06-25 20:43:20

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

cacert=/etc/ssl/certs/ca-certificates.crt
27
répondu prabeesh 2016-03-17 08:00:01

le moyen Le plus rapide pour contourner l'erreur est d'ajouter l'option-k quelque part dans votre demande curl. Cette option " permet des connexions à SSL cites sans certs."(à partir de curl --help)

sachez que cela peut signifier que vous ne parlez pas au point final que vous pensez que vous êtes, car ils présentent un certificat non signé par une AC en qui 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 suivantes:

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

j'ai ajouté on-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 installé apt-cyg. Et ca-certificats.

14
répondu 10gistic 2015-07-14 18:15:48

@roens est correct. Cela affecte tous les utilisateurs Anaconda , avec l'erreur ci-dessous

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

la solution est d'utiliser le curl de système par défaut et éviter de toucher avec la variable Anaconda PATH pré-programmée. Vous pouvez soit

  1. renommer le binaire Anaconda curl:)

    mv /path/to/anaconda/bin/curl /path/to/anaconda/bin/curl_anaconda

  2. OU supprimer Anaconda curl

    conda remove curl

$ which curl /usr/bin/curl

[0] Anaconda Ubuntu curl GitHub issue https://github.com/conda/conda-recipes/issues/352

10
répondu Harsha Manjunath 2016-06-14 06:56:01

de $ man curl :

--cert-type <type>
    (SSL) Tells curl what certificate type the provided  certificate
    is in. PEM, DER and ENG are recognized types.  If not specified,
    PEM is assumed.

    If this option is used several times, the last one will be used.

--cacert <CA certificate>
    (SSL) Tells curl to use the specified certificate file to verify
    the peer. The file may contain  multiple  CA  certificates.  The
    certificate(s)  must be in PEM format. Normally curl is built to
    use a default file for this, so this option is typically used to
    alter that default file.
8
répondu Puri-iOS Developer 2014-03-04 19:54:27

une autre solution consiste à désactiver la validation du certificat:

echo insecure >> ~/.curlrc
5
répondu Pablo R. Mier 2015-08-12 15:31:28

pour le code PHP tournant sur XAMPP sous Windows j'ai trouvé que j'avais besoin d'éditer php.ini pour inclure les en-dessous de

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = curl-ca-bundle.crt

et ensuite copier dans un fichier https://curl.haxx.se/ca/cacert.pem et renommer en curl-ca-bundle.crt et le placer sous \XAMPP path (Je n'ai pas pu obtenir curl.capath de travail). J'ai également trouvé que le CAbundle sur le site cURL n'était pas suffisant pour le site distant auquel je me connectais, donc utilisé un qui est répertorié avec une pré-compilé Windows version de curl 7.47.1 à http://winampplugins.co.uk/curl /

5
répondu LJT 2016-03-12 10:18:53

il semble que votre boucle pointe vers un fichier non-existant avec des ca certs ou similaire.

pour la référence primaire sur les ca certs à boucle, voir: https://curl.haxx.se/docs/sslcerts.html

4
répondu Daniel Stenberg 2016-09-01 11:57:02

cela a fonctionné pour moi

sudo apt-get install ca-certificates

puis allez dans le dossier Certificats à

sudo cd /etc/ssl/certs

ensuite vous copiez les ca-certificats.crt fichier dans le /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 changez les permissions en utilisant chmod 777-r folderNAME

3
répondu Kwame Yeboah 2015-03-16 13:12:55

pour ce que ça vaut, vérifier which curl est aussi significatif.

un utilisateur sur une machine partagée que je maintiens avait reçu cette erreur. Mais la cause s'est avérée être parce qu'ils avaient installé Anaconda ( http://continuum.io ). Ce faisant, mettre le chemin binaire D'Anaconda avant le standard $PATH , et il est livré avec son propre curl binaire, qui a eu de la difficulté à trouver les certs par défaut que étaient installé sur cette machine Ubuntu.

2
répondu roens 2016-03-17 19:17:50

j'ai eu exactement le même problème. Il s'avère que mon dossier /etc/ssl/certs/ca-certificates.crt était mal formé. La dernière entrée montrait quelque chose comme ceci:

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

après avoir ajouté une nouvelle ligne avant -----END CERTIFICATE----- , curl a pu gérer le fichier de certificats.

c'était très ennuyeux à découvrir puisque ma commande update-ca-certificates ne me donnait aucun avertissement.

c'est peut-être ou non un problème spécifique à la version de curl, donc voici mon version, juste pour complétude:

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 
2
répondu ShrimpPhaser 2016-12-21 13:51:49

curl effectue SSL vérification du certificat par défaut, à l'aide d'un "bundle" des clés publiques Certificate Authority (CA) (CA certs). Défaut bundle s'appelle curl-ca-bundle.crt; vous pouvez spécifier un autre fichier en utilisant l'option -- cacert.

si ce serveur HTTPS utilise un certificat signé par une AC représentée par le paquet, la vérification de certificat probablement échoué en raison d'un problème avec le certificat (peut-être expiré ou que le nom pourrait pas faites correspondre le nom de domaine dans L'URL).

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

par exemple

curl --insecure http://........
1
répondu meda 2015-10-21 01:38:26

Exécuter la commande suivante dans git bash qui fonctionne très bien pour moi

git config --global http.sslverify "false"
1
répondu J4cK 2017-06-19 18:25:16

l'erreur est due à des fichiers de certificats de chaîne SSL corrompus ou manquants dans le répertoire de L'ICP. Vous aurez besoin de s'assurer que les fichiers CA-bundle, les étapes suivantes: Dans votre console / terminal:

mkdir /usr/src/ca-certificates && cd /usr/src/ca-certificates

entrez ce site: https://rpmfind.net/linux/rpm2html/search.php?query=ca-certificates , obtenez votre certificat ca, pour ainsi. Copier l'url du téléchargement et coller dans l'url: wget your_url_donwload_ca-ceritificated.tr / min maintenant, installez votre rpm:

rpm2cpio your_url_donwload_ca-ceritificated.rpm | cpio -idmv

redémarrez maintenant votre service: mon exemple cette commande:

sudo service2 httpd restart
0
répondu Santos L. Victor 2016-07-29 15:46:18

résolution de Ce problème pour moi :

curl --remote-name --time-cond cacert.pem \
    https://curl.haxx.se/ca/cacert.pem
0
répondu Reza Farshi 2018-09-14 09:28:51

j'ai eu le même problème.

C'était mon erreur

  error setting ce                                                                     
  rtificate verify locations:
  CAfile: D:/git_repo/mingw32/ssl/certs/ca-bundle.crt
  CApath: none

Il fonctionne très bien pour moi

j'ai renommé le nom du répertoire d'installation de Git en git_repo ".

-1
répondu Kanhaiya Kumar 2018-09-14 08:41:29