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

13

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 la recherche sur Google, l'emplacement CAfile qu'il recherche n'est pas correct pour Ubuntu (et il n'existe pas sur mon ordinateur), /etc/ssl/certs/ca-certificates.crtest 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.crtau .curlrcfichier (nouvellement créé) dans mon répertoire personnel. J'ai essayé les deux, et aucun ne résout complètement le problème. curl trouve cet emplacement, mais cela ne fonctionne toujours pas, ce qui donne l'erreur:

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 CA avec $ sudo update-ca-certificates --fresh lesquels ils ont mis à jour les certificats, mais je n'ai toujours pas fait disparaître l'erreur 60.

Je ne connais pas très bien les certificats CA, et je doute d'avoir volontairement ajouté un certificat auto-signé dans 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 à neuf avec tous mes certificats? Ou est-ce que quelqu'un sait même comment je vais trouver où se trouve ce certificat auto-signé, et comment le supprimer?

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

themaninthewoods
la source

Réponses:

10

Après avoir fait des recherches et travaillé dessus au cours des derniers jours, je l'ai fait fonctionner, et la réponse a finalement été assez simple.

J'avais besoin de mettre capath=/etc/ssl/certs/dans mon .curlrcdossier.

Cela a fait fonctionner curl sur la ligne de commande. Pour continuer à faire fonctionner curl dans R (où j'ai rencontré le problème pour la première fois), je devais également avoir cacert=/etc/ssl/certs/ca-certificates.crtdans mon .curlrcfichier comme essayé auparavant, sinon il a continué à chercher/etc/pki/tls/certs/ca-bundle.crt

Je n'ai toujours aucune idée pourquoi je voyais l'erreur sur les certificats auto-signés.

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

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

dans le même certsrépertoire. Ayant cafilesouligné cela a également fonctionné. En fin de compte, je l'ai remis ca-certificates.crtet cela fonctionne toujours.

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

themaninthewoods
la source
8

la clé cafile 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
Duc
la source
1
cela a fonctionné pour moi sur Ubuntu 16.04!
Joost Döbken
0

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

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

J'espère que cela t'aides!

Tamil
la source
0

Après quelques recherches, je l'ai fait fonctionner, et la réponse a fini par être plutôt simple. Faites 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érifier par ctrl + h dans le répertoire personnel. sinon là, 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.

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

PyDevSRS
la source