Jak centrálně spravovat kořenové certifikáty CAcert.org v systému Mac OS X

Tento dokument podrobně popisuje, jak skriptovat proces importu kořenových certifikátů CAcert do systémového řetězu klíčů kořenových cerifikátů.

Rozdíly v různých verzích operačního systému

V Mac OS 10.5 se tento systémový řetěz klíčů nazývá "SystemRootCertificates.keychain" a je zobrazen v Keychain Access jako "System Roots". V Mac OS 10.4 a starších se nazývá "X509Anchors" (bez přípony souboru) a je takto zobrazen v Keychain Access. V Mac OS 10.5 se stále zobrazuje starý soubor, ale ignoruje se a existuje jen kvůli zpětné kompatibilitě se softwarem třetích stran. Ve všech případech jsou soubory systémového řetězu klíčů umístěny v /System/Library/Keychains. Následující skripty byly napsány pro Mac OS 10.4. Chcete-li je upravit pro Leopard, změňte SystemRootCertificates.keychain ve všech jménech s cestami za X509Anchors.

Motivace

Centrální správa je příjemná. Distribuujte modifikovaný soubor X509Anchors do laboratoře pracovních stanic a Vaše vnitřní služby podepsané CAcert.org budou na těchto strojích pracovat správně.

Příklad

# kopíruj mne
mkdir cacert.org
cd cacert.org
curl -k -o "root_X0F.crt"   "https://www.cacert.org/certs/root_X0F.crt"
curl -k -o "class3_x14E228.crt" "https://www.cacert.org/certs/class3_x14E228.crt"
cp "/System/Library/Keychains/X509Anchors" "${HOME}/Library/Keychains/X509Anchors.backup"
cp "/System/Library/Keychains/X509Anchors" "${HOME}/Library/Keychains/X509Anchors"

# Instaluj kořenový certifikát CAcert.org třídy 1,
# shoduje-li se jeho "otisk prstu" se šablonou.
if openssl x509 -noout -fingerprint < root_X0F.crt | \
   grep "Fingerprint=DD:FC:DA:54:1E:75:77:AD:DC:A8:7E:88:27:A9:8A:50:60:32:52:A5"
then
  certtool i "root_X0F.crt" k=X509Anchors
fi

# Instaluj zprostředkující kořenový certifikát CAcert.org třídy 3, 
# shoduje-li se jeho "otisk prstu" se šablonou.
if openssl x509 -noout -fingerprint < class3_x14E228.crt | \
   grep "Fingerprint=D8:A8:3A:64:11:7F:FD:21:94:FE:E1:98:3D:D2:5C:7B:32:A8:FF:C8"
then
  certtool i "class3_x14E228.crt" k=X509Anchors
fi

sudo cp "${HOME}/Library/Keychains/X509Anchors" "/System/Library/Keychains/X509Anchors"
# konec

Rozbor

Používám curl s volbou -k, abych zamezil ověření certifikátu SSL. Kontrola "otisku prstů" klíče postačí a import certifikátů do skupiny curl rootca bundle je v jiném dokumentu.

Potom pořizuji dvě kopie souboru X509Anchors do adresáře, v němž standardně pracují certifikátové služby dodané prodejcem.

Nakonec zkontroluji "otisky prstů" klíče s použitím prodejcem dodané verze openssl a programu grep. Můžete je ověřit sami v http://www.cacert.org/index.php?id=3. Vykazuje-li grep shodu, použiji prodejcem dodanou utilitu certtool k importu obou certifikátů do uživatelského řetězu klíčů X509Anchors.

Jde-li vše dobře, zkopíruji řetěz klíčů zpět do systémového umístění. Tento právě upravený soubor X509Anchors lze také distribuovat do všech počítačů sítě sídla pomocí takového nástroje, jako cfengine.


Pro jednotlivé stroje OS X (nebo jen několik) můžete importovat DER verze kořenových certifikátů třídy 1 a 3 (root_X0F.der a class3_x14E228.der) pomocí Keychain. Apple má návod zde, jiný návod je zde. Podrobnější návod najdete na Purdue.

Připomínám, že po počátečním importu ohlásí Keychain Access, že certifikáty nejsou v důvěryhodném kořeni. Ukončete a znovu spusťte Keychain Access a tato závada se vyřeší sama.

Autoři