Je reçois l'erreur suivante en utilisant curl:
curl: (77) emplacements de vérification de certificat de configuration d'erreur: CAfile: /etc/ssl/certs/ca-certificates.crt CApath: aucun
Comment définir ce certificat pour vérifier les emplacements? Merci.
Cette erreur est liée à un paquet manquant : ca-certificates
. Installez-le.
Sous Ubuntu Linux (et une distribution similaire):
# 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 dit:
Ce package 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.
Comme vu sur: Debian - Détails du paquet ca-certificates in squeeze
J'avais aussi la dernière version de ca-certificates installée mais je reçois toujours l'erreur:
curl: (77) error setting certificate verify locations:
CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
Le problème était que curl s'attendait à ce que le certificat se trouve sur le chemin /etc/pki/tls/certs/ca-bundle.crt
mais ne le trouve pas car il se trouvait sur le chemin /etc/ssl/certs/ca-certificates.crt
.
Copier mon certificat vers la destination attendue en exécutant
Sudo cp /etc/ssl/certs/ca-certificates.crt /etc/pki/tls/certs/ca-bundle.crt
a travaillé pour moi. Vous devrez 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 attendu par curl, c'est-à-dire remplacez /etc/pki/tls/certs/ca-bundle.crt
par le chemin suivant "CAfile:" dans votre message d'erreur.
Mettez ceci dans votre .bashrc
# fix CURL certificates path
export CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
(voir le commentaire de Robert)
Créez un fichier ~/.curlrc
avec le contenu suivant
cacert=/etc/ssl/certs/ca-certificates.crt
Le moyen le plus rapide de contourner l'erreur consiste à ajouter l'option -k quelque part dans votre requête curl. Cette option "autorise les connexions à des citations SSL sans certs". (de curl --help)
Sachez que cela peut signifier que vous ne communiquez pas avec le système d'extrémité que vous pensez être, car ils présentent un certificat non signé par une autorité de certification de 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é sur -k:
curl -o /usr/bin/apt-cyg https://raw.github.com/cfg/apt-cyg/master/apt-cyg -k
et pas de message d'erreur. En bonus, j'ai maintenant apt-cyg installé. Et ca-certificats.
@roens est correct. Ceci 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 de contournement consiste à utiliser le curl système par défaut et à éviter de jouer avec la variable Anaconda PATH
préfixée. Vous pouvez soit
Renommez le binaire Anaconda curl :)mv /path/to/anaconda/bin/curl /path/to/anaconda/bin/curl_anaconda
OU supprime Anaconda curlconda remove curl
$ which curl /usr/bin/curl
[0] Anaconda Ubuntu curl problème Github https://github.com/conda/conda-recipes/issues/352
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.
Cela a fonctionné pour moi
Sudo apt-get install ca-certificates
puis allez dans le dossier des certificats à
Sudo cd /etc/ssl/certs
puis vous copiez le fichier ca-certificates.crt dans le /etc/pki/tls/certs
Sudo cp ca-certificates.crt /etc/pki/tls/certs
Une autre alternative pour résoudre ce problème consiste à désactiver la validation du certificat:
echo insecure >> ~/.curlrc
Pour PHP code fonctionnant sous XAMPP sous Windows, j'ai découvert que je devais modifier le fichier php.ini pour inclure le texte ci-dessous.
[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.cainfo = curl-ca-bundle.crt
puis copier dans un fichier https://curl.haxx.se/ca/cacert.pem et renommer en curl-ca-bundle.crt et le placer sous le chemin\xampp (je ne pouvais pas faire curl.capath au travail). J'ai également constaté que CAbundle sur le site cURL n'était pas suffisant pour le site distant auquel je me connectais. J'utilise donc celui qui est répertorié avec une version Windows précompilée de curl 7.47.1 à l'adresse http: // winampplugins .co.uk/curl /
Il semble que votre boucle pointe vers un fichier non existant avec des certificats de certification ou similaires.
Pour la référence principale sur les certificats CA avec curl, voir: https://curl.haxx.se/docs/sslcerts.html
curl exécute la vérification de certificat SSL
par défaut, à l'aide d'un "ensemble" de Certificate Authority (CA)
clés publiques (certificats CA). Le paquet par défaut est nommé 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 autorité de certification représentée dans l'ensemble, la vérification du certificat a probablement échoué en raison d'un problème lié au certificat (il peut expirer ou le nom peut ne pas correspondre au nom de domaine indiqué 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://........
Il suffit de créer les dossiers manquants dans votre système.
/ etc/pki/tls/certs /
et créez le fichier en utilisant la commande suivante,
Sudo apt-get install ca-certificate
copiez et collez ensuite le certificat dans le dossier de destination indiqué 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'emplacement 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
Fixé.
Vérifier que which curl
soit exécuté est également important.
Un utilisateur sur une machine partagée que je maintiens avait cette erreur. Mais la cause s’est avérée être due au fait qu’ils avaient installé Anaconda ( http://continuum.io ). Ce faisant, placez le chemin binaire d’Anaconda avant le $PATH
standard, qui vient avec son propre binaire curl
, qui avait du mal à trouver les certificats par défaut que était installé sur cette machine Ubuntu.
J'ai eu exactement le même problème. En fait, mon fichier /etc/ssl/certs/ca-certificates.crt
était mal formé. La dernière entrée a montré 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 était en mesure de gérer le fichier de certificats.
C'était très ennuyant de le savoir puisque ma commande update-ca-certificates
ne m'avait donné aucun avertissement.
Ceci peut ou peut ne pas être un problème spécifique à la version de curl, alors voici ma version, juste pour être complet:
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
Si vous utilisez homebrew sur macOS ou linuxbrew sous linux, essayez de réinstaller les fichiers openssl
et curl
en procédant comme suit sur cette page .
Ce message d'erreur indique que curl n'est pas en mesure d'établir une connexion sécurisée à l'aide de openssl. Une réinstallation de openssl devrait résoudre le problème. Pour utiliser temporairement une connexion non sécurisée permettant à curl et à git de télécharger les fichiers nécessaires, exécutez:
echo insecure >> ~/.curlrc
git config --global http.sslVerify false
Ensuite, installez ou réinstallez openssl et curl:
HOMEBREW_CURLRC=1 brew reinstall openssl curl
Enfin, annulez les modifications de sécurité pour que curl et git utilisent à nouveau les connexions sécurisées:
sed -i '/^insecure$/d' ~/.curlrc
git config --global http.sslVerify true
Vous devrez peut-être démarrer une nouvelle session Shell pour vérifier le résultat avec
curl -v https://github.com # or any other https urls.
Si le résultat suivant apparaît en sortie, le problème doit être résolu!
* successfully set certificate verify locations:
* CAfile: /usr/local/etc/openssl/cert.pem
CApath: /usr/local/etc/openssl/certs
Références:
Exécutez la commande suivante dans git bash qui fonctionne bien pour moi
git config --global http.sslverify "false"
Cela a corrigé pour moi:
curl --remote-name --time-cond cacert.pem \
https://curl.haxx.se/ca/cacert.pem
J'ai eu ce problème et il s'est avéré que ma version de CURL ne pouvait pas analyser les certificats encodés en DER (et ne prêtait pas attention à l'option --cert-type non plus). Lorsque j'ai converti le certificat au format PEM, cela a fonctionné.
J'ai trouvé ce correctif facile et sécurisé. Cela implique simplement de changer le chemin de deux valeurs dans le fichier php.ini
. Suivez les instructions ici: https://ourcodeworld.com/articles/read/196/xampp-wampp-php-ssl-certificate-error-unable-to-get-local-issuer-certificate
Ci-dessous, décrivez les étapes pour résoudre les problèmes.
1. Découvrez que le fichier existe sur l’URL de définition.
2. Sinon, téléchargez le fichier à partir de l'URL. https://curl.haxx.se/ca/cacert.pem
3. Copiez et importez le fichier dans le chemin défini sur le fichier php.ini.
4. Redémarrez le service Apache.
L'erreur est due à des fichiers de certificat de chaîne SSL corrompus ou manquants dans le répertoire PKI. Assurez-vous que les fichiers sont bien regroupés en procédant comme suit: 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 le SO. Copiez l’URL du téléchargement et collez-le dans l’URL: wget your_url_donwload_ca-ceritificated.rpm maintenant, installez votre rpm:
rpm2cpio your_url_donwload_ca-ceritificated.rpm | cpio -idmv
maintenant redémarrez votre service: mon exemple cette commande:
Sudo service2 httpd restart