Wo werden die Root-CAs in OS X gespeichert?

Ich brauche eines der Root-CA-Zertifikate als Dateinamen, um es an ein Befehlszeilenprogramm zu übergeben. Ich könnte es manuell von DigiCert herunterladen (und in das erforderliche Format .crt konvertieren), aber ich denke, es ist einfacher, einfach die Zertifizierungsstelle zu verwenden, die OS X bereits haben muss. Es ist ein allgemeines Zertifikat, und alle meine Linux-Server haben es beispielsweise bereits.

In der App "Keychain Access" ist das richtige Zertifikat vorhanden, aber ich kann nichts finden, was sagt, wo es lebt.

Existieren diese Zertifizierungsstellen im Dateisystem oder nur in einem undurchsichtigen proprietären Format für OS X-APIs?

Antworten (2)

Die Root-CAs werden gespeichert in:

/System/Library/Keychains/SystemCACertificates.keychain /System/Library/Keychains/SystemRootCertificates.keychain

Ja, dies sind OS X-Schlüsselbunddateien, die undurchsichtig, aber nicht unbedingt proprietär sind. Sie könnten theoretisch die Schlüsselbunddienst-APIs von OS X verwenden, um an die Zertifikatsdaten in der Schlüsselbunddatei zu gelangen, aber das könnte übertrieben sein.

Wenn Sie eine greifbare Kopie eines der Root-CA-Zertifikate wünschen, wählen Sie es einfach in der Schlüsselbundverwaltung aus und ziehen Sie es auf den Desktop, um eine Kopie davon im .cer-Format zu erstellen.

(Sie können auch Quick Look im Finder verwenden, um eine Vorschau der Zertifikatsinformationen anzuzeigen).

Sie können das Sicherheitstool unter OSX verwenden, um nach bestimmten Zertifikaten in einem oder mehreren Schlüsselbunden zu suchen.

Von Big Sur stammen die Standardspeicherorte für die System-Schlüsselbunde

  • /System/Library/Keychains/SystemRootCertificates.keychain
  • /Library/Keychains/System.Schlüsselbund

und für Ihren persönlichen Login-Schlüsselbund

  • /Users//Library/Keychains/login.keychain-db

Das Security-Befehlszeilenprogramm (siehe man security) kann zum Auflisten, Exportieren und Suchen nach Zertifikaten verwendet werden, die in diesen Schlüsselbunden gespeichert sind.

Exportieren aller Stammzertifikate in ein PEM-codiertes Paket:

security export -t certs -f pemseq -k /System/Library/Keychains/SystemRootCertificates.keychain -o /tmp/all_certs.pem

Wenn Sie ein bestimmtes Zertifikat wünschen, bei dem Sie den Common Name im Schlüsselbund "KEYCHAIN" kennen, versuchen Sie stattdessen Folgendes:

security find-certificate -p -c "COMMON NAME" "KEYCHAIN"

Wenn Sie es durch openssl leiten, können Sie einfach überprüfen, ob es sich um das richtige Zertifikat handelt:

security find-certificate -p -c "COMMON NAME" "KEYCHAIN" | openssl x509 -text -noout

Zum Beispiel; Um alle Root-Zertifikate mit der Zeichenfolge "Apple" im Namen zu finden und sie im PEM-Format anzuzeigen, würden Sie verwenden

security find-certificate -p -c "Apple" /System/Library/Keychains/SystemRootCertificates.keychain

Es gibt viele, viele weitere Optionen für das "Sicherheits"-Programm, um mit Schlüsselbunden zu arbeiten, also müssen Sie die Manpage lesen. Es ist ein ziemlich nützliches Programm, das nicht sehr bekannt zu sein scheint.