Сертификат для TCPDF

Я хотел бы создать сертификат (самоподписанный на данный момент) для зашифрованного PDF-файла на сервере. Мне интересен рабочий процесс о том, как с помощью TCPDF.

Что я сделал:

1) Генерировать ключи:

openssl req -x509 -nodes -days 365000 -newkey rsa:1024 openssl pkcs12 -export -in tcpdf.crt -out tcpdf.p12 

2) Затем сгенерируйте PDF с помощью .crt файла

3) Затем я начал tcpdf.p12 акробат и установил сертификат ( tcpdf.p12 ). Я использовал Document-> параметры безопасности -> цифровой идентификатор

4) Я могу импортировать параметры безопасности, но не могу открыть PDF. Не знаю, правильно ли я это делаю? Что происходит с тем, что читатель acrobat 9.5.4 открывает диалоговое окно с вводом пароля. Я указываю пароль и появляется ошибка -> неизвестная ошибка -> CRecipientList-218

5) Код, который я использовал (в основном то же самое)

 $certificate = 'file://../tcpdf.crt'; $info = array( 'Name' => 'TCPDF', 'Location' => 'Office', 'Reason' => 'Testing TCPDF', 'ContactInfo' => 'http://www.tcpdf.org', ); $pdf->setSignature($certificate, $certificate, 'tcpdfdemo', '', 2, $info); $pdf->SetProtection($permissions=array('print', 'copy'), $user_pass='', owner_pass=null, $mode=1, $pubkeys=array(array('c' => 'file://../tcpdf.crt', 'p' => array('print')))); 

Я объединил следующие примеры:

http://www.tcpdf.org/examples/example_052.phps

http://www.tcpdf.org/examples/example_016.phps

PS: Я знаю, что это очень практичный пример. Просто подумал, что легче понять шаги, которые я делаю.

Вопросов:

  1. Является ли рабочий процесс в целом правильным: как (!) Подходить к сертификатам для PDF с шифрованием?

  2. Когда я .p12 файл .p12 я должен .p12 пароль для этого файла, который я использовал позже, когда импортировал сертификат в acrobat. Я спрашиваю, потому что у меня есть возможность «по генерации» указать пароль.

  3. Если рабочий процесс прав … как я могу исправить проблему?

Подход в основном правильный, но вы, возможно, пропустили некоторые детали в нем.

Я использую сертификат в формате *.crt без кодовой фразы (включая закрытый и открытый ключ), и он отлично работает.

Также обратите внимание, что вы должны установить расширение OpenSSL в PHP.

См. Комментарии к методу TCPDF::setSignature() Nicola Asuni:

 * To create self-signed signature: openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout tcpdf.crt -out tcpdf.crt * To export crt to p12: openssl pkcs12 -export -in tcpdf.crt -out tcpdf.p12 * To convert pfx certificate to pem: openssl pkcs12 -in tcpdf.pfx -out tcpdf.crt -nodes 

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

Я надеюсь, что вы также взглянули на комментарии;) есть мини, как настроить pdf с помощью предоставленного файла

особенно:

 // To open the document you need to install the private key (tcpdf.p12) on the Acrobat Reader. The password is: 1234 

однако вам необходимо предоставить setProtection существующий ключ:

 'c' => 'file://../tcpdf.crt' 

путь, который вы указали, просто показывает, где вам нужно указать путь, но сам путь должен быть изменен

Резюме: прочитайте снова комментарии в файле примера 016, они помогут ему работать так, как вам нужно