Вопрос или проблема
У меня есть пакет PKCS#7 (файл p7b), который содержит множество публичных S/MIME сертификатов, и мне нужно добавить еще два сертификата в пакет.
Существует ли способ добавить эти сертификаты с помощью openssl (или возможно keytool) без необходимости воссоздавать пакет с нуля?
Файл p7b обычно находится в двоичном формате DER, но может также быть в формате PEM, закодированном в base-64. openssl crl2pkcs7
может добавлять сертификаты в пакет PKCS#7, но может обрабатывать только входные файлы в формате PEM.
Итак, если файл p7b находится в формате DER, сначала конвертируйте его в PEM:
openssl pkcs7 -print_certs -in old_cert_store.p7b -inform der -out old_cert_store.p7b
Затем добавьте новый сертификат и снова выведите в формате DER:
openssl crl2pkcs7 -nocrl -certfile old_cert_store.pem \
-certfile new_cert.pem -out new_cert_store.p7b -outform der
И вы закончили.
Обратите внимание, что вы можете добавить несколько файлов сертификатов, используя опцию -certfile
несколько раз.
Проверьте с помощью
openssl pkcs7 -print_certs -in new_cert_store.p7b -inform der
Ответ или решение
Чтобы добавить сертификаты в существующий файл пакета PKCS#7 (p7b), необходимо учитывать несколько ключевых моментов. Этот процесс может быть выполнен с использованием утилиты OpenSSL, однако есть нюансы, если ваш файл имеет определённый формат. Ниже приведены подробные шаги для успешного выполнения этой задачи.
Шаг 1: Определение формата p7b файла
Сначала необходимо убедиться, в каком формате представлен ваш p7b файл — в бинарном формате DER или в формате PEM. Это можно сделать, изучив содержимое файла. Формат DER обычно бинарный, тогда как PEM — это текстовый формат с разделителями "—–BEGIN CERTIFICATE—–" и "—–END CERTIFICATE—–".
Шаг 2: Конвертация DER в PEM (при необходимости)
Если ваш p7b файл находится в формате DER, то нужно его конвертировать в формат PEM. Для этого выполните следующую команду:
openssl pkcs7 -print_certs -in old_cert_store.p7b -inform der -out old_cert_store.pem
Эта команда извлечёт сертификаты из бинарного файла и сохранит их в текстовом формате PEM.
Шаг 3: Добавление новых сертификатов
После того как вы получили файл в формате PEM, следующим шагом будет добавление новых сертификатов в существующий набор. Для этого используйте следующую команду:
openssl crl2pkcs7 -nocrl -certfile old_cert_store.pem -certfile new_cert.pem -out new_cert_store.p7b -outform der
Обратите внимание, что если у вас несколько сертификатов, вы можете добавить их, указывая несколько раз параметр -certfile
. Например:
openssl crl2pkcs7 -nocrl -certfile old_cert_store.pem -certfile new_cert1.pem -certfile new_cert2.pem -out new_cert_store.p7b -outform der
Шаг 4: Проверка нового пакета PKCS#7
После того как вы добавили новые сертификаты, важно убедиться в корректности нового p7b файла. Для этого выполните команду:
openssl pkcs7 -print_certs -in new_cert_store.p7b -inform der
Эта команда выведет на экран все сертификаты, содержащиеся в новом файле, и позволит вам убедиться, что ваши новые сертификаты успешно добавлены.
Заключение
Добавление сертификатов в существующий файл PKCS#7 не требует его полной переработки. Используя OpenSSL и соблюдая изложенные шаги, вы легко сможете обновить свой сертификатный хранилище. Этот метод позволяет обеспечить гибкость и простоту управления сертификатами, что особенно важно для организации, где безопасность данных имеет первостепенное значение.