12

サーバー上の暗号化された PDF の証明書 (現時点では自己署名) を生成したいと思います。私にとって興味深いのは、TCPDF でそれを行う方法に関するワークフローです。

私がしたこと:

1) キーを生成します。

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

.crt2) 次に、 - ファイルを使用して PDF を生成します。

3) 次に、acrobat リーダーを起動し、証明書をインストールしました ( tcpdf.p12)。ドキュメント - >セキュリティ設定 - >デジタルIDを使用しました

4) セキュリティ設定をインポートできましたが、それでも PDF を開くことができません。私がそれを正しく行っているかどうかわかりませんか?acrobat Reader 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. ワークフローが正しい場合...どうすれば問題を解決できますか?

4

2 に答える 2

4

このアプローチは基本的には正しいですが、詳細を見逃している可能性があります。

*.crtパスフレーズ (秘密鍵と公開鍵を含む) のない形式の証明書を使用しており、正常に動作します。

また、PHP に OpenSSL 拡張機能をインストールしておく必要があることに注意してください。

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 ドキュメントは、単に信頼されていないと表示されますが、通常どおり開くことができます。

于 2013-08-21T14:26:20.490 に答える
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 ファイルのコメントをもう一度読んでください。必要な方法で動作させるのに役立ちます。

于 2013-03-26T14:06:45.373 に答える