TCPDF 证书

Posted

技术标签:

【中文标题】TCPDF 证书【英文标题】:Certificate for TCPDF 【发布时间】:2013-02-14 02:20:05 【问题描述】:

我想在服务器上为加密的 PDF 生成证书(目前为自签名)。让我感兴趣的是如何使用 TCPDF 实现这一点的工作流程。

我做了什么:

1) 生成密钥:

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

2) 然后生成带有.crt的PDF - 文件

3) 然后我启动了 acrobat reader 并安装了证书 (tcpdf.p12)。我使用了文档->安全设置->数字身份证

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

P.S.:我知道这是一个非常实际的例子。只是觉得更容易理解我正在执行的步骤。

问题:

    关于如何(!)处理带有加密的 PDF 证书的一般工作流程是否正确?

    当我生成 .p12 文件时,我必须提供该文件的密码,我稍后在将证书导入 acrobat 时使用该密码。我问是因为我也有可能“在生成时”提供密码。

    如果工作流程正确...我该如何解决问题?

【问题讨论】:

您是否尝试过联系 tcpdf 的人? 我做了,但目前在 sourceforge 上没有答案。 【参考方案1】:

该方法基本上是正确的 - 但您可能遗漏了其中的一些细节。

我一直在使用*.crt 格式的证书,没有密码(包括私钥和公钥),它工作正常。

另外请注意,您必须在 PHP 中安装 OpenSSL 扩展。

请参阅 Nicola Asuni 的方法 TCPDF::setSignature() 的 cmets:

* 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 文档只会显示为不受信任,但它们仍然可以正常打开。

【讨论】:

【参考方案2】:

我希望你也看看 cmets ;) 有一个迷你如何使用提供的文件设置 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 文件中的 cmets,它们将帮助您按照您需要的方式工作

【讨论】:

我当然改变了路径。每个示例都可以单独使用,但不能一起使用。

以上是关于TCPDF 证书的主要内容,如果未能解决你的问题,请参考以下文章

数字证书的证书格式

ca证书和服务器证书区别

根证书和中间证书的区别

SSL证书是三级证书好还是二级证书好?有啥不同?

苹果证书导出p12文件

SSL证书代码签名证书文档签名证书及邮件签名证书有什么区别