2013-02-28 2 views
10

Я хотел бы создать сертификат (самоподписанный на данный момент) для зашифрованного PDF-файла на сервере. Мне интересен рабочий процесс о том, как с помощью TCPDF.Сертификат для 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). Я использовал 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, я должен указать пароль для этого файла, который я использовал позже, когда импортировал сертификат в acrobat. Я спрашиваю, потому что у меня есть возможность «по генерации» указать пароль.

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

+1

Вы пытались связаться с ребятами tcpdf? – j0k

+0

Я сделал, но пока нет ответа на sourceforge. – whereismydipp

ответ

0

Я надеюсь, что вы также взглянули на комментарии;) есть мини, как настроить 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, они помогут получить его работать так, как вам нужно

+0

Конечно, я изменил путь. Каждый пример работает сам по себе, но не вместе. – whereismydipp

3

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

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

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

Смотрите комментарии для метода TCPDF::setSignature() от Никола Асуни:

* 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, подписанные с самозаверяющими сертификатами просто показать, как ненадежный, но все же они может нормально открываться.

Смежные вопросы