用PHP / Symfony / TCPDF对PDF进行数字签名

时间:2018-06-28 13:57:09

标签: php digital-signature tcpdf fpdf

我正在尝试签署pdf格式,以抛出“ https://tcpdf.org/examples/example_052/”中的示例

我的证书文件扩展名为“ .p12”,而不是“ .crt”。因此,我更改了引用证书的77行。

$ certificate ='file://data/cert/tcpdf.crt'; -> $ certificate ='file://data/cert/myCertificate.p12';

我改变的另一件事是在88行的setSignature函数中的第三个参数。第三个参数是“ private_key_password”,我将关联的密码添加到private_key。 (我也尝试不更改此值)

但是,结果创建了一个pdf文件,但是Adobe Acrobat Reader告知“文档认证的有效性为UNKONOWN”,并且如果您尝试阅读Adobe内部的“签名详细信息”->“证书详细信息...”, Acrobat Reader程序意外结束。显然,数字签名不适用于pdf。

有什么想法吗?非常感谢。

1 个答案:

答案 0 :(得分:0)

为了能够将本示例与我的证书一起应用,我必须将pfx文件证书(“ .p12”)转换为2种“ .pem”,然后使用以下next命令行:

openssl pkcs12-在myOldCertificate.p12 -clcerts -nokeys -out publicCert.pem->问我“输入导入密码”

openssl pkcs12 -in myOldCertificate.p12 -nocerts -out privateKey_cert.pem->问我“输入导入密码”以及“输入PEM密码”

所以最后,我只是从下载的示例52中更改了89行。

//设置文档签名

$ pdf-> setSignature('file:///var/www/html/publicCert.pem','file:///var/www/html/privateKey_cert.pem','xxxxxx',``, 2,$ info);

在“ xxxxx”中,我输入了与导入密码相同的字符串,以防万一,PEM密码也相同。