Работа с ICAO PKD на Python и OpenSSL
Что такое ICAO PKD
ICAO PKD - Международый центральный репозиторий открытых ключей электронных документов (eMRTD). Данные открытые ключи предназначены для проверки подписи чипа электронного паспорта/ID. Скачать данные с репозитория может абсолютно каждый по ссылке, нужный нам файл называется "The latest collection of Document Signing Certificates(DSCs) and Certificate Revocation Lists(CRLs) to verify electronic passports.".
Получаем данные (LDIF -> PEM)
После загрузки мы получаем данные в формате LDIF, но нам необходим формат PEM, это можно конвертировать вручную через OpenSSL, но предлагаю воспользоваться более удобным решением - этот скрипт на Python. После его работы мы получаем файл masterList.pem
. Для удобства работы в XCA мы можем конвертировать это все в PKCS7 (.p7b) через команду:
openssl crl2pkcs7 -nocrl -certfile masterList.pem -out masterList.p7b
Проверка сертификата паспорта
Если у вас уже есть сертификат паспорта в формате PEM то можно проверить его простой командой:
openssl verify -CAfile masterList.pem EF_SOD.pem
Однако в большинстве у всех сертификат в формате PKCS7, и чтобы избежать лишних телодвижений с конвертированием форматов предлагаю воспользоваться возможностью OpenSSL получать данные из STDIN:
openssl pkcs7 -in /path/to/EF_SOD.p7b -inform DER -print_certs | openssl verify -CAfile masterList.pem