php - TCPDF证书

标签 php certificate tcpdf

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

我做了什么:

1) 生成 key :

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)。我使用了 Document->security settings -> digital 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

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

问题:

  1. 关于如何(!)处理加密 PDF 证书的工作流程是否总体正确?

  2. 当我生成 .p12 文件时,我必须为该文件提供一个密码,我稍后在将证书导入到 acrobat 中时使用了该密码。我问是因为我也有可能“代代相传”提供密码。

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

最佳答案

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

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

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

请参阅 Nicola Asuni 对方法 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 文档只是显示为不受信任,但它们仍然可以正常打开。

关于php - TCPDF证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15126274/

相关文章:

javascript - 事后值(value)变动

javascript - 使用 php 和 Jquery 数据表显示 mysql 数据库?

ios - Apple iOS 分发证书

php - 计算 PDO 准备语句中的行数

certificate - 代码签名(Microsoft Authenticode)

c# 验证 CRL 列表中的证书

php - 是否有 TCPDF::writeHTML 的替代方法来获取内联粗体文本

php - 我怎样才能用 TCPDF 省略 Helvetica?

PHP 如何检查 PDF 是否经过数字签名

php - 在没有 Eval 的情况下在字符串中执行 PHP 代码