Наконец, я понимаю немного о файле p7s.Это довольно обычное явление для защиты сообщений электронной почты, но я могу использовать файлы p7s, которые содержат отдельные подписи PKCS # 7 с сертификатом, для обеспечения достоверности файла.
Итак, я отделяю своиобъяснение, по частям, чтобы было легко объяснить, что я здесь делаю.Пожалуйста, исправьте меня, если что-то не так!
Первая, начальная конфигурация:
- создать личный ключ и сертификат
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
Добавить в доверенные сертификаты, чтобы позволить openssl разрешить ваш сертификат как действительный
sudo cp cert.pem /usr/local/share/ca-certificates/
sudo update-ca-certificates
Второе, создание файла p7s
- ВыполнитьКоманда ниже, чтобы подписать файл PDF, с закрытым ключом, сертификатом и генерировать файл p7s, который содержит подписанный хэш файла и сертификат
openssl smime -sign -in test.pdf -inkey key.pem -outform DER -binary -signer cert.pem -out test.pdf.p7s
Наконец, Проверка файла p7s
- Теперь я должен извлечь подпись pkcs7 из файла p7s
openssl pkcs7 -inform der -in test.pdf.p7s -out test.pdf.pkcs7
После этого я извлек сертификат из файла pkcs7
openssl pkcs7 -print_certs -in test.pdf.pkcs7 -out test.pdf.pkcs7.cert
Затем проверьте pkcs7, сертификат и файл вместе.Просто чтобы проверить, принадлежит ли этот файл этому сертификату
openssl smime -verify -binary -inform PEM -in test.pdf.pkcs7 -content test.pdf -certfile test.pdf.pkcs7.cert -nointern -noverify > /dev/null
PS .: Чтобы удалить этот сертификат, просто выполните команды ниже.Это позволит удалить и обновить сертификаты
sudo rm -f /usr/local/share/ca-certificates/cert.pem
sudo update-ca-certificates --fresh