Il problema sorge perché OS X non mantiene i suoi certificati CA nel file system; vivono nel portachiavi "System Roots". Puoi vederli con l'app Keychain Access (disponibile nella cartella Applicazioni / Utility).
Per quegli strumenti che non sanno come parlare al portachiavi (come il ricciolo), puoi esportare questi certificati in una cartella di tua scelta, diciamo /etc/ssl/certs
per essere coerente con la maggior parte delle distribuzioni di Linux. Puoi trascinarli e rilasciarli da Keychain Access in una finestra del Finder, oppure selezionarli e scegliere "Esporta elementi ..." dal menu file. Con il trascinamento della selezione sembra sempre utilizzare il formato binario .cer
, mentre la maggior parte degli strumenti CLI richiede il PEM con codifica Base64 (comunemente utilizzando l'estensione di file .crt
). È possibile esportare in formato pem dall'accesso con portachiavi, ma sembra esportare un solo certificato alla volta anche se sono stati selezionati più certificati. Per ovviare a questo, ho scritto uno script bash per convertire in batch .cer in file .crt in formato 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
Per usarlo, creare una cartella, inserire questo script (l'ho chiamato cerconv.sh
), trascinare e rilasciare tutti i certificati CA radice in esso, aprire un terminale in tale cartella ed eseguire solo bash cerconv.sh
.
Per evitare cose nefande che sostituiscono i tuoi certificati CA, ho aggiunto una riga a chmod
tutti in sola lettura.
Questo potrebbe non essere necessario - Non ho certamente problemi con git (hub), homebrew, arricciatura ecc. senza doverlo fare e ho fatto per anni - ma almeno ora sai come ottenere i certificati.
Questo approccio è migliore dell'utilizzo di -k
in arricciatura perché non stai compromettendo la tua sicurezza.
Aggiornamento : ho appena scoperto l'utilità security
su OS X. Ecco un comando che lo usa per esportare tutti i certificati dal portachiavi del sistema in un singolo file .pem che dovrebbe essere utilizzabile con arricciare:
security export -p -t certs -k 'security list-keychains -d system|cut -d '"' -f 2' -o certs/certs.pem