Является ли этот PDF цифровой подписью правильно? PHP / TCPDF

Я обновляю проект для моей компании, и есть раздел, где нам нужно подписать PDF-файл с нашим файлом сертификата. В этом случае я должен изменить скрипт, который подписывает этот PDF-файл, используя обновленную библиотеку из PHP.

В старом коде мы использовали другой скрипт, чтобы это произошло, и нам пришлось использовать файл .p12 + строку. Используя этот старый скрипт, когда вы открываете созданный файл PDF с помощью Acrobat Reader DC, мы получаем следующее изображение, на котором вы видите «Подписано, и все подписи действительны».

введите описание изображения здесь

В новом скрипте я использую следующий пример:

https://tcpdf.org/examples/example_052/

Чтобы иметь возможность применить этот пример с моим сертификатом, мне пришлось преобразовать свой сертификат файла pfx («.p12») в 2 вида «.pem», которые выдают следующие строки команд nexts:

openssl pkcs12 -in myOldCertificate.p12 -clcerts -nokeys -out publicCert.pem -> спросил меня «Введите пароль для импорта»

openssl pkcs12 -in myOldCertificate.p12 -nocerts -out privateKey_cert.pem -> спросил меня «Введите пароль для импорта», а также для «Введите пароль PEM»

Итак, наконец, я просто изменил строку 89 из загруженного примера 52.

// установить подпись документа

$ pdf-> setSignature (‘file: ///var/www/html/publicCert.pem’, ‘file: ///var/www/html/privateKey_cert.pem’, ‘xxxxxx’, », 2, $ Информация); -> В «xxxxx» я написал ту же строку, что и пароль для импорта, и, на всякий случай, также для парольной фразы PEM.

И когда я создаю PDF-файл с цифровой подписью и открываю его с помощью Acrobat Reader DC, вы видите следующее изображение:

введите описание изображения здесь

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

0

Решение

Формат PDF поддерживает два типа пользовательских подписей:

  • утверждение подписей и
  • сертификационные подписи.

Сертификационные подписи в дополнение к подписанию документа также определяют, какие изменения в документе должны быть разрешены после подписания; подписи одобрения просто подписывают.

Обычно автор документа подписывает его, используя сертификационную подпись, чтобы указать, что он является автором документа и допускает только определенные дополнения к нему (например, заполнение формы). Сертифицированный таким образом документ затем направляется другим сторонам, которые (возможно, после заполнения формы) подписывают документ с помощью подписи для подтверждения того, что они утверждают содержание документа, включая его дополнения.

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

Относительно ваших забот

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

Кроме различий, описанных выше, подпись сертификации так же действительна, как и подпись одобрения. В качестве обзора значения значков строки состояния подписи, посмотрите здесь:

Шпаргалка проверки подписи Acrobat

(Этот шпаргалка предназначена для Adobe Acrobat и Reader 9; между тем цвет сертификационной ленты изменился с синего на черный, но его значение остается прежним)


Если вы строго хотите вернуться к подписи одобрения, попробуйте расширить линию

$pdf->setSignature($certificate, $certificate, 'tcpdfdemo', '', 2, $info);

в примере кода с другим параметром

$pdf->setSignature($certificate, $certificate, 'tcpdfdemo', '', 2, $info, 'A');

что должно (на первый взгляд источники TCPDF) заставить код создавать подписи одобрения.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector