Le problème vient du fait qu'OS X ne conserve pas ses certificats d'autorité de certification dans le système de fichiers ; ils se trouvent dans le trousseau de clés "System Roots". Vous pouvez les voir avec l'application Keychain Access (qui se trouve dans votre dossier Applications/Utilities).
Pour les outils qui ne savent pas dialoguer avec le trousseau (comme curl), vous pouvez exporter ces certificats dans un dossier de votre choix, par exemple /etc/ssl/certs
pour être cohérent avec la plupart des distros linux. Vous pouvez soit les glisser-déposer du trousseau d'accès dans une fenêtre du Finder, soit les sélectionner et choisir "Exporter les éléments..." dans le menu Fichier. Avec le glisser-déposer, il semble que l'on utilise toujours le fichier binaire .cer
alors que la plupart des outils CLI veulent du PEM encodé en base64 (en utilisant généralement l'option .crt
). Vous pouvez exporter au format pem à partir de l'accès au trousseau, mais il ne semble exporter qu'un seul certificat à la fois, même si vous en avez sélectionné plusieurs. Pour contourner ce problème, j'ai écrit un script bash script pour convertir par lots les fichiers .cer en fichiers .crt au format PEM :
#!/bin/bash
#Convert all .cer files in this folder into PEM format .crt files
shopt -s nullglob
for f in *.cer
do
openssl x509 -inform der -in "${f}" -outform pem -out "${f%.*}.crt"
rm "$f"
done
chmod 444 *crt
Pour l'utiliser, créez un dossier, placez-y ce script (je l'ai appelé cerconv.sh
), faites-y glisser tous vos certificats d'autorité de certification racine, ouvrez un terminal dans ce dossier et exécutez simplement bash cerconv.sh
.
Pour éviter que des personnes malveillantes n'échangent vos certificats d'autorité de certification, j'ai ajouté une ligne à chmod
ils sont tous en lecture seule.
Tout cela est peut-être inutile - je n'ai aucun problème avec git(hub), homebrew, curl etc. sans avoir à le faire, et ce depuis des années - mais au moins vous savez maintenant comment obtenir les certificats.
Cette approche est préférable à l'utilisation de -k
en curl parce que vous ne compromettez pas votre sécurité.
Mise à jour : Je viens de découvrir le security
sous OS X. Voici une commande qui l'utilise pour exporter tous les certificats du trousseau de clés de votre système dans un seul fichier .pem qui devrait être utilisable avec curl :
security export -p -t certs -k `security list-keychains -d system|cut -d '"' -f 2` -o certs/certs.pem