Я хотел бы создать сертификат (самоподписанный на данный момент) для зашифрованного 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: Я знаю, что это очень практичный пример. Просто подумал, что легче понять шаги, которые я делаю.
Вопросов:
Является ли рабочий процесс в целом правильным: как (!) Подходить к сертификатам для PDF с шифрованием?
Когда я .p12
файл .p12
я должен .p12
пароль для этого файла, который я использовал позже, когда импортировал сертификат в acrobat. Я спрашиваю, потому что у меня есть возможность «по генерации» указать пароль.
Если рабочий процесс прав … как я могу исправить проблему?
Подход в основном правильный, но вы, возможно, пропустили некоторые детали в нем.
Я использую сертификат в формате *.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, они помогут ему работать так, как вам нужно