Где корневые центры сертификации хранятся в OS X?

Мне нужен один из корневых сертификатов ЦС в качестве имени файла для передачи в программу командной строки. Я мог бы загрузить его с DigiCert (и преобразовать в требуемый формат, .crt) вручную, но я полагаю, что проще просто использовать ЦС, который уже должен быть в OS X. Это общий сертификат, и, например, он уже есть на всех моих Linux-серверах.

В приложении «Связка ключей» правильный сертификат существует, но я не могу найти ничего, что говорило бы о том, где он находится.

Существуют ли эти ЦС в файловой системе или только в непрозрачном проприетарном формате для API OS X?

Ответы (2)

Корневые ЦС хранятся в:

/Система/Библиотека/Связки ключей/SystemCACertificates.keychain /Система/Библиотека/Связки ключей/SystemRootCertificates.keychain

Да, это файлы связки ключей OS X, которые непрозрачны, хотя и не обязательно являются собственностью. Теоретически вы можете использовать API-интерфейсы служб цепочки ключей OS X для получения данных сертификата внутри файла цепочки для ключей, но это может быть излишним.

Если вам нужна реальная копия любого из корневых сертификатов CA, просто выберите его в Keychain Access и перетащите их на рабочий стол, чтобы сделать их копию в формате .cer.

(Вы также можете использовать Quick Look в Finder для предварительного просмотра информации о сертификате).

Вы можете использовать инструмент безопасности в OSX для поиска определенных сертификатов в одной или нескольких цепочках ключей.

В Big Sur местами по умолчанию, используемыми для системных брелков, являются

  • /Система/Библиотека/Связки ключей/SystemRootCertificates.keychain
  • /Библиотека/Связки ключей/System.keychain

и для вашего личного брелка для входа

  • /Пользователи//Библиотека/Связки ключей/login.keychain-db

Программа командной строки безопасности (см. man security) может использоваться для просмотра, экспорта и поиска сертификатов, хранящихся в этих цепочках ключей.

Экспорт всех корневых сертификатов в пакет с кодировкой PEM:

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

Если вам нужен конкретный сертификат, где вы знаете общее имя в цепочке ключей «KEYCHAIN», попробуйте:

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

Если вы передаете его через openssl, вы можете легко убедиться, что это правильный сертификат:

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

Например; Чтобы найти все корневые сертификаты со строкой «Apple» в имени и отобразить их в формате PEM, вы должны использовать

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

Есть много, много других вариантов работы программы «безопасности» с цепочками ключей, поэтому вам нужно прочитать справочную страницу. Это довольно полезная программа, которая, кажется, малоизвестна.