Ainsi, depuis la mise à niveau Mavericks, la boucle a plus de problèmes avec les certificats.
Lorsque j'essayais de boucler un fichier de mon serveur Web avec son certificat auto-signé, il obtenait l'erreur "Certificat SSL: chaîne de certificats non valide".
Cela a été corrigé en ajoutant le certificat à mon trousseau système et en le configurant pour toujours autoriser SSL, les informations que j'ai trouvées ici et ici .
Cela fonctionne bien et lorsque je recourbe 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 fait une boucle dedans), je reviens au même message d'erreur.
Je suppose que root ne lit peut-être pas le trousseau système?
Quelqu'un connaît-il un moyen de résoudre ce problème?
root
-disponible.curlrc
au lieu de--insecure
. Ce qui est exactement comme il est dit: pour un attaquant en position de réseau, cela serait trivial pour MITM et injecterait du code.Root ne lit pas à partir des paramètres de confiance utilisateur actuels, mais il existe à la fois des paramètres de confiance administrateur et des paramètres de confiance spécifiques à l'utilisateur racine. (Ils sont également distincts des paramètres d'approbation du système .) Notez également que les paramètres d'approbation de certificat sont quelque peu différents de l'ajout d'un certificat à un trousseau; vous pouvez marquer un certificat comme approuvé sans l'ajouter complètement. (La situation exacte ici n'est pas claire pour moi et les documents que j'ai vus sont vagues.)
Vous pouvez marquer un certificat comme approuvé pour votre utilisateur actuel comme
mais cela n'aide pas avec root. La solution, comme vous pouvez maintenant le deviner, est soit
sudo
celle ci-dessus, qui la marque ensuite comme approuvée spécifiquement pour l'utilisateur root:ou pour utiliser l'
-d
indicateur pour l'ajouter aux paramètres de confiance de l'administrateur:(OS X affichera une boîte de dialogue de mot de passe pour confirmer celle-ci.)
L'un ou l'autre de ces deux derniers semble suffisant
sudo curl
.Référence: https://developer.apple.com/library/mac/Documentation/Darwin/Reference/ManPages/man1/security.1.html
la source
C'est vraiment dans l'indice de sortie:
L'avantage de l'utilisation de la solution ci-dessus est qu'elle fonctionne pour toutes les
curl
commandes, 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 approuvés.la source
Si vous utilisez MacPorts (et que le script tiers que vous avez mentionné ne le supprime pas
$PATH
ou n'appelle pas/usr/bin/curl
), vous pouvez installer les portscertsync
etcurl
dans cet ordre.certsync
est un outil et une liste de lancement correspondante qui exportera votre trousseau système$prefix/etc/openssl/cert.pem
et installera un lien symbolique$prefix/share/curl/curl-ca-bundle.crt -> $prefix/etc/openssl/cert.pem
afin que MacPorts curl récupère automatiquement les certificats.certsync
mettra également à jour automatiquement les fichiers générés lorsque vous modifiez votre trousseau système.la source
La documentation que vous recherchez est ici. Il explique comment utiliser cURL sur Mavericks et comment fournir vos certificats: http://curl.haxx.se/mail/archive-2013-10/0036.html
la source
Pour
sudo curl
fonctionner (sur OSX Sierra), nous avons dû importer le certificat dans leSystem.keychain
et y faire confiance. Cela pourrait être fait manuellement dans l'application Porte-clés ou en utilisant cette commande:Il était important de spécifier
-d
et de définir manuellement le chemin d'accès au trousseau système via-k
pour vous assurer que le certificat y est réellement importé s'il ne l'est pas encore.La commande fonctionne sans
sudo
, mais demanderait ensuite le mot de passe via une boîte de dialogue d'interface utilisateur, ce qui pourrait être un obstacle pour les scripts.la source
SecCertificateCreateFromData: Unknown format in import.