Цифровая подпись PDF с PHP / Symfony / TCPDF - PullRequest
0 голосов
/ 28 июня 2018

Я пытаюсь подписать PDF-файл с примером "https://tcpdf.org/examples/example_052/"

Мое расширение файла сертификата ".p12" вместо ".crt". Поэтому я изменил строку 77, которая ссылается на сертификат.

$ certificate = 'file: //data/cert/tcpdf.crt'; -> $ certificate = 'file: //data/cert/myCertificate.p12';

Еще одна вещь, которую я изменил, - это третий параметр в функции setSignature в строке 88. Этот третий параметр является «private_key_password», и я добавил свой связанный пароль к private_key. (Я тоже пробовал без изменения этого значения)

Но в результате создается PDF-файл, но Adobe Acrobat Reader сообщает, что «срок действия сертификата документа НЕИЗВЕСТЕН», а также если вы пытаетесь прочитать «Сведения о подписи» -> «Сведения о сертификате ...» в Adobe Программа Acrobat Reader неожиданно завершает работу программы. Очевидно, что цифровая подпись не относится к PDF правильно.

Есть идеи о том, что происходит? Большое спасибо.

1 Ответ

0 голосов
/ 09 июля 2018

Чтобы иметь возможность применить этот пример с моим сертификатом, мне пришлось преобразовать свой сертификат файла 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, $ info);

В 'xxxxx' я написал ту же строку, что и пароль для импорта, и, на всякий случай, тоже самое для парольной фразы PEM.

...