此 pdf 数字签名是否正确? PHP/TCPDF
Is this pdf digital signed correctly? PHP/TCPDF
我正在为我的公司更新一个项目,有一个部分我们需要用我们的证书文件对 pdf 进行数字签名。在这种情况下,我应该使用来自 PHP.
的更新库更改签署此 pdf 的脚本
在旧代码中,我们使用另一个脚本来实现这一点,我们必须使用 .p12 文件 + 字符串。使用这个旧脚本,当您使用 Acrobat Reader DC 打开创建的 pdf 时,我们会得到下一张图片,您可以在其中看到 "Signed and all signatures are valid".
在新脚本中,我使用下一个示例:
https://tcpdf.org/examples/example_052/
为了能够将此示例与我的证书一起应用,我必须将我的 pfx 文件证书 (".p12") 转换为 2 种 ".pem" 并抛出以下命令行:
openssl pkcs12 -in myOldCertificate.p12 -clcerts -nokeys -out publicCert.pem -> 问我 "Enter Import Password"
openssl pkcs12 -in myOldCertificate.p12 -nocerts -out privateKey_cert.pem -> 问我 "Enter Import Password" 以及 "Enter PEM pass phrase"
所以最后,我只是从下载的示例 52 中更改了第 89 行。
//设置文档签名
$pdf->setSignature('file:///var/www/html/publicCert.pem', 'file:///var/www/html/privateKey_cert.pem', 'xxxxxx', '', 2, $info); -> 在 'xxxxx' 中,我写了与导入密码相同的字符串,以防万一,PEM 密码也相同。
当我创建数字签名的 pdf 并使用 Acrobat Reader DC 打开它时,您可以看到下一张图片:
我担心的是,我看到上面写着 "Certified by My company certification",看起来一切正常,但没有绿色勾号,我不确定它是否完全有效。你必须认为我需要最安全的方法来验证此 pdf 的真实性和完整性。
PDF格式支持两种用户签名:
- 批准签名和
- 认证签名。
认证签名除了签署文档外还select签署后允许对文档进行更改;批准签名只是签名。
通常文档的作者使用认证签名来签署文档,以表明他是文档的作者并且只允许对文档进行某些添加(例如表单填写)。然后将如此认证的文件转发给其他方(可能在填写表格后)使用批准签名签署文件,以表明他们批准文件内容,包括他们的补充。
您的旧代码应用了批准签名,而您的新代码应用了允许 "only form fill-in, signing, and page adding actions".
的认证签名
关于您的担心
My worry is because I can see that says "Certified by My company certification" and seems all ok but there is not green tick and I'm not sure if it's completely valid.
除上述差异外,认证签名与批准签名一样有效。签名状态栏图标的含义概览,看这里:
(此秘籍sheet适用于Adobe Acrobat和Reader9;同时认证丝带的颜色由蓝色变为黑色,但含义不变)
如果您确实想返回到批准签名,请尝试延长行
$pdf->setSignature($certificate, $certificate, 'tcpdfdemo', '', 2, $info);
在示例代码中将另一个参数设置为
$pdf->setSignature($certificate, $certificate, 'tcpdfdemo', '', 2, $info, 'A');
这应该(乍一看 TCPDF 来源)导致代码创建批准签名。
我正在为我的公司更新一个项目,有一个部分我们需要用我们的证书文件对 pdf 进行数字签名。在这种情况下,我应该使用来自 PHP.
的更新库更改签署此 pdf 的脚本在旧代码中,我们使用另一个脚本来实现这一点,我们必须使用 .p12 文件 + 字符串。使用这个旧脚本,当您使用 Acrobat Reader DC 打开创建的 pdf 时,我们会得到下一张图片,您可以在其中看到 "Signed and all signatures are valid".
在新脚本中,我使用下一个示例:
https://tcpdf.org/examples/example_052/
为了能够将此示例与我的证书一起应用,我必须将我的 pfx 文件证书 (".p12") 转换为 2 种 ".pem" 并抛出以下命令行:
openssl pkcs12 -in myOldCertificate.p12 -clcerts -nokeys -out publicCert.pem -> 问我 "Enter Import Password"
openssl pkcs12 -in myOldCertificate.p12 -nocerts -out privateKey_cert.pem -> 问我 "Enter Import Password" 以及 "Enter PEM pass phrase"
所以最后,我只是从下载的示例 52 中更改了第 89 行。
//设置文档签名
$pdf->setSignature('file:///var/www/html/publicCert.pem', 'file:///var/www/html/privateKey_cert.pem', 'xxxxxx', '', 2, $info); -> 在 'xxxxx' 中,我写了与导入密码相同的字符串,以防万一,PEM 密码也相同。
当我创建数字签名的 pdf 并使用 Acrobat Reader DC 打开它时,您可以看到下一张图片:
我担心的是,我看到上面写着 "Certified by My company certification",看起来一切正常,但没有绿色勾号,我不确定它是否完全有效。你必须认为我需要最安全的方法来验证此 pdf 的真实性和完整性。
PDF格式支持两种用户签名:
- 批准签名和
- 认证签名。
认证签名除了签署文档外还select签署后允许对文档进行更改;批准签名只是签名。
通常文档的作者使用认证签名来签署文档,以表明他是文档的作者并且只允许对文档进行某些添加(例如表单填写)。然后将如此认证的文件转发给其他方(可能在填写表格后)使用批准签名签署文件,以表明他们批准文件内容,包括他们的补充。
您的旧代码应用了批准签名,而您的新代码应用了允许 "only form fill-in, signing, and page adding actions".
的认证签名关于您的担心
My worry is because I can see that says "Certified by My company certification" and seems all ok but there is not green tick and I'm not sure if it's completely valid.
除上述差异外,认证签名与批准签名一样有效。签名状态栏图标的含义概览,看这里:
(此秘籍sheet适用于Adobe Acrobat和Reader9;同时认证丝带的颜色由蓝色变为黑色,但含义不变)
如果您确实想返回到批准签名,请尝试延长行
$pdf->setSignature($certificate, $certificate, 'tcpdfdemo', '', 2, $info);
在示例代码中将另一个参数设置为
$pdf->setSignature($certificate, $certificate, 'tcpdfdemo', '', 2, $info, 'A');
这应该(乍一看 TCPDF 来源)导致代码创建批准签名。