【问题标题】:PHP TCPDF sign PDFPHP TCPDF 签名 PDF
【发布时间】:2021-08-17 13:51:32
【问题描述】:

我想使用 TCPDF 库签署 PDF。 我在https://tcpdf.org/examples/example_052/ 找到了一个例子。

唯一的问题是如何为此获得有效的证书。

我确实联系了一些证书颁发机构,但他们可以在可用于手动签署文档的硬件(USB 令牌)上颁发证书。 我希望这个过程在服务器端自动完成,以便用户可以下载签名证书。

所以问题是:这可能吗?如果是,是否有可以颁发此类证书的证书颁发机构?

【问题讨论】:

  • 您愿意接受 TCPDF 以外的替代解决方案吗?
  • PDF是使用TCPDF生成的,但是如果有一个可以签名PDF的库,应该没问题

标签: php pdf tcpdf signature


【解决方案1】:

您没有阅读您发布的链接吗?

来自源代码(PDF下方):

/*
NOTES:
 - To create self-signed signature: openssl req -x509 -nodes -days 365000 -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
*/

自签名证书完全合法。除此之外,您可以在任何受信任的提供商处购买 1 年的证书(X509 证书,与 SSL 使用的相同)。

最后:您不分发证书...您使用密钥签署 PDF 并使用公钥进行验证。

【讨论】:

  • 感谢您的回答。我没有看到生成证书的任何问题。唯一的问题是:如果我将 PDF 发送给另一个人,当用户打开文件时,PDF 阅读器会将此证书视为有效吗?
  • 当然...但是如果您使用自签名证书,用户会信任您吗?
【解决方案2】:

我不知道有任何 CA 颁发通过AATL 验证的软件证书(它要求密钥存储在安全的硬件设备上并且无法提取)。有一些消息表明,一些 CA 正在颁发合格的印章(一种公司证书)作为通过EUTL 验证的软件证书,但直到现在我们还没有在任何 CA 的任何官方报价。

有一个blog post from 2015,有人在 TCPDF 中使用 OpenSSL CLI 调用来使用 USB 令牌上的证书和密钥。

今天有几种云服务提供密钥管理系统,将密钥存储在安全的硬件设备上:

要为您的密钥获取有效证书,您需要向颁发证书的证书颁发机构证明您的私钥已创建并存储在此类安全的硬件设备上。目前,这仅适用于 Google Cloud KMS 以自动化方式(未来可能会发生变化 - 请参阅 here 以了解支持此类证明的服务和设备的概述)。

对于不支持自动证明的服务,颁发证书机构可能会提供不同的证明方式。有些允许您创建密钥创建仪式的屏幕录像。其他人则需要通过网络会议远程见证密钥对生成仪式。他们可能会为此类证明收取费用。

我们 (Setasign) 提供了一个名为 SetaPDF-Signer 的 PHP 商业 PDF 签名解决方案,它带有适用于所有列出的密钥管理系统的模块。您可以在此处查看它们的实际效果:

在演示中,我们使用Ensured 颁发的证书创建启用 LTV(长期验证)的签名。认证是通过密钥创建仪式的屏幕录像完成的。

【讨论】:

    猜你喜欢
    • 2018-12-07
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多