PHP TCPDF sign PDF



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

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

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

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

我不知道有任何CA颁发通过AATL验证的软件证书(它要求密钥存储在安全的硬件设备上并且不能提取)。有消息称,一些证书颁发机构正在颁发合格的印章(一种公司证书)作为软件证书,通过EUTL进行验证,但到目前为止,我们还没有在任何一家证书颁发机构发布任何官方报价。

有一篇2015年的博客文章,其中有人在TCPDF中使用OpenSSL CLI调用来使用USB令牌上的证书和密钥来实现此工作。

现在有一些云服务提供密钥管理系统,将密钥存储在安全的硬件设备上:

  • Azure密钥库
  • AWS公里
  • Google Cloud KMS

要为您的密钥获得有效的证书,您需要向颁发证书的机构证明您的私钥是创建并存储在这样一个安全的硬件设备上的。目前,只有Google Cloud KMS能够以一种自动化的方式实现这一点(将来可能会改变——例如,在这里查看支持这种认证的服务和设备的概述)。

对于不支持自动认证的服务,颁发证书的机构可以提供不同的认证方式。Some允许您创建密钥创建仪式的屏幕记录。另一些则需要通过网络会议远程见证密钥对生成仪式。他们可能会对这种认证收取费用。

我们(Setasign)在PHP中提供了一个商业PDF签名解决方案,名为SetaPDF-Signer,它附带了所有列出的密钥管理系统的模块。你可以在这里看到它们的作用:

  • SetaPDF-Signer Azure密钥库演示
  • SetaPDF-Signer演示
  • SetaPDF-Signer Google Cloud KMS演示

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

你没看你发的链接吗?

从源代码(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,然后用公钥验证。

最新更新