web-dev-qa-db-fra.com

Comment résoudre les problèmes de certification CA avec Curl dans Ubuntu 14.04?

J'utilise Ubuntu 14.04. Lorsque j'utilise curl, j'obtiens l'erreur suivante:

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

D'après ce que je comprends de Google, l'emplacement de CAfile qu'il recherche n'est pas correct pour Ubuntu (et il n'existe pas sur mon ordinateur), /etc/ssl/certs/ca-certificates.crt est l'emplacement approprié.

La plupart des solutions impliquaient de définir la variable d'environnement CURL_CA_BUNDLE à l'emplacement approprié ou d'ajouter cacert=/etc/ssl/certs/ca-certificates.crt au fichier (nouvellement créé) .curlrc de mon répertoire personnel. J'ai essayé les deux, et ni résoudre complètement le problème. curl trouve cet emplacement, mais cela ne fonctionne toujours pas, donnant l'erreur suivante:

curl: (60) SSL certificate problem: self signed certificate in certificate chain

J'ai également essayé de désinstaller et de réinstaller curl dans Ubuntu et de mettre à jour mes certificats de certification avec $ Sudo update-ca-certificates --fresh qui les a mis à jour, mais je n'ai toujours pas fait l'erreur 60 disparaître.

Je ne connais pas très bien les certificats de certification CA et je doute que j’ai ajouté à dessein des certificats auto-signés par le passé. Peut-être par accident, je ne sais pas.

Est-ce que quelqu'un sait comment réparer ceci? Existe-t-il un moyen de repartir à zéro avec tous mes certs? Ou est-ce que quelqu'un sait même comment je vais savoir où se trouve ce certificat auto-signé et comment le retirer?

PS: Je ne veux pas utiliser le drapeau -k (aka --insecure). Je veux que cela fonctionne en toute sécurité.

13
themaninthewoods

Après avoir étudié et travaillé ces derniers jours, je me suis mis au travail et la réponse a été plutôt simple.

Je devais définir capath=/etc/ssl/certs/dans mon fichier .curlrc.

Cela a curl travailler sur la ligne de commande. Pour que Curl fonctionne encore dans R (où j'ai rencontré le problème pour la première fois), je devais aussi avoir cacert=/etc/ssl/certs/ca-certificates.crt dans mon fichier .curlrc comme précédemment essayé, sinon, il a continué à rechercher /etc/pki/tls/certs/ca-bundle.crt

Je ne sais toujours pas pourquoi j'ai constaté l'erreur concernant les certificats auto-signés.

Sur la base d'autres découvertes aléatoires, j'ai également téléchargé un certificat du site Web de Curl avec:

Sudo wget http://curl.haxx.se/ca/cacert.pem

dans le même répertoire certs. Avoir cafile pointé sur cela a également fonctionné. En fin de compte, je l'ai remis à ca-certificates.crt et cela fonctionne toujours.

Je ne comprends pas exactement pourquoi cela a fonctionné ou ce qui se passe, mais c'est résolu.

9
themaninthewoods

cafile la touche ne fonctionne pas pour moi (curl 7.45.0) mais cacert (de l'option --cacert) le fait. Mon fichier . Curlrc:

capath=/etc/ssl/certs/
cacert=/etc/ssl/certs/ca-certificates.crt
8
Duke

Après quelques recherches, je l'ai mis au travail et la réponse a été plutôt simple. Faire pas à pas

Step:1 Open terminal ctrl+alt+t
Step:2 cd /etc/ssl/certs/
Step:3 Sudo wget http://curl.haxx.se/ca/cacert.pem 

L’étape 3 téléchargera le fichier pem dans le dossier certs

  Step 4: Check if .curlrc file is available in your home folder or not. 

.curlrc est un fichier caché. vérifiez par ctrl + h dans le répertoire de base. sinon il y a alors sur le type de terminal

Step 5:  nano ~/.curlrc 
Step 6: Now paste the below lines in the open file
        capath=/etc/ssl/certs/
        cacert=/etc/ssl/certs/ca-certificates.crt
Step 7: Now save the file and do your things using curl command.

N.B Ici, j'ai utilisé l'éditeur nano, mais vous pouvez utiliser n'importe quel éditeur.

0
PyDevSRS

Nous avons rencontré le même problème avec l’un de nos programmes C++ dans Ubuntu 14.04.5. le . curlrc la méthode ne prenait pas effet.

Cela a été résolu en téléchargeant le ca-certificats.crt à / etc/ssl/certs/ca-certificates.crt et créer un lien symbolique ca-bundle.crt sous / etc/pki/tls/certs / annuaire.

J'espère que cela t'aides!

0
Tamil