14 votes

Comment réparer curl : (60) certificat SSL : Chaîne de certificat invalide lors de l'utilisation de sudo

Depuis la mise à jour de Mavericks, curl a plus de problèmes avec les certificats.

Lorsque j'ai essayé de curler un fichier à partir de mon serveur web avec son certificat auto-signé, j'ai obtenu l'erreur "SSL Certificate : Invalid certificate chain".

J'ai corrigé ce problème en ajoutant le certificat au trousseau de clés de mon système et en le paramétrant pour qu'il autorise toujours SSL. ici y ici .

Cela fonctionne bien et quand je fais un curl sur un fichier, il se télécharge correctement.

Cependant, si j'exécute curl avec sudo avant (par exemple, j'ai un script qui doit être exécuté avec sudo et qui fait un curl dans celui-ci), je retrouve le même message d'erreur.

Je suppose que Root ne lit pas le trousseau de clés du système, peut-être ?

Quelqu'un connaît-il un moyen de résoudre ce problème ?

22voto

Dan Points 2783

Si vous stockez vos certificats de CA sur le système de fichiers (au format PEM), vous pouvez demander à curl de les utiliser avec

sudo curl --cacert /path/to/cacert.pem ...

Vous pouvez également désactiver la vérification du certificat avec

sudo curl --insecure ...

Edit : Updated with regard to feedback

Si vous souhaitez définir ce paramètre de manière permanente, vous devez créer un fichier de type .curlrc et les placer dans votre répertoire personnel. sudo peuvent avoir besoin de ce fichier dans /var/root Le fichier prend les mêmes options que la ligne de commande mais sans les tirets. Une option par ligne :

cacert=/path/to/my/certs.pem

6voto

Wes Campaigne Points 2120

Root ne lit pas les paramètres de confiance de l'utilisateur actuel, mais il existe des paramètres de confiance de l'administrateur et des paramètres de confiance spécifiques à l'utilisateur de Root. (Ceux-ci sont également distincts des paramètres de système paramètres de confiance). Notez également que les paramètres de confiance des certificats sont quelque peu distincts du simple ajout d'un certificat à un trousseau de clés ; vous pouvez marquer un certificat comme étant de confiance sans l'ajouter complètement. (La situation exacte ici n'est pas claire pour moi, et les docs que j'ai vus sont vagues).

Vous pouvez marquer un certificat comme fiable pour votre utilisateur actuel en tant que

$ security add-trusted-cert /path/to/cert.pem

mais ça n'aide pas avec Root. La solution, comme vous pouvez maintenant le deviner, est soit de sudo ci-dessus, qui le marque ensuite comme étant de confiance pour l'utilisateur Root spécifiquement :

$ sudo security add-trusted-cert /path/to/cert.pem

ou d'utiliser le -d pour l'ajouter aux paramètres de confiance de l'administrateur :

$ security add-trusted-cert -d /path/to/cert.pem

(OS X fera apparaître une boîte de dialogue de mot de passe pour confirmer celui-ci).

L'un ou l'autre des deux derniers semble être suffisant pour sudo curl .

Référence : https://developer.apple.com/library/mac/Documentation/Darwin/Reference/ManPages/man1/security.1.html

6voto

zinking Points 159

C'est vraiment dans l'indice de sortie :

echo insecure >> ~/.curlrc

L'avantage de l'utilisation de la solution ci-dessus est qu'elle fonctionne pour tous les pays. curl mais elle n'est pas recommandée car elle peut introduire des Attaques MITM en se connectant à des hôtes non sécurisés et non fiables.

2voto

Ibrahim Points 1

Si vous utilisez MacPorts (et que le script de tierce partie que vous avez mentionné ne le supprime pas des $PATH ou des appels /usr/bin/curl ), vous pouvez installer le certsync y curl dans cet ordre.

certsync est un outil et un plist launchd correspondant qui exportera votre trousseau de clés système vers $prefix/etc/openssl/cert.pem et installer un lien symbolique $prefix/share/curl/curl-ca-bundle.crt -> $prefix/etc/openssl/cert.pem pour que MacPorts curl récupère automatiquement les certificats. certsync mettra aussi automatiquement à jour les fichiers générés lorsque vous modifiez votre trousseau de clés système.

0voto

jberry Points 226

La documentation que vous recherchez se trouve ici. Elle explique comment utiliser cURL sous Mavericks et comment fournir vos certificats : http://curl.haxx.se/mail/archive-2013-10/0036.html

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X