【问题标题】:How to implement Digital Signature in PHP如何在 PHP 中实现数字签名
【发布时间】:2015-05-27 05:48:17
【问题描述】:

我必须在证书中实现数字签名,我们用 PHP 将其打印为 PDF。

要求类似于注册商或分注册商等授权人员对证书进行数字签名。实现数字签名背后的基本思想是要知道:

1) 证书是否由授权人进行数字签名,并且是该授权人或其他无权创建者。

2) 注册商/分注册商对证书进行数字签名后证书是否有任何变化(防止伪造)。

3) 文件何时签署或更改何时完成。

我在这个主题上进行了很多搜索,但一无所获,甚至没有任何可以指导我如何做到这一点的教程。我以前从未听说过这个,但根据要求我必须这样做。所以请有人指导我或帮助我如何在 PHP 中实现它。我必须实现的证书是http://crsdemo.lsipl.com/crs/web/index.php/auth/birthCertificate/view/cert/B/NzU2MjQ%3D

【问题讨论】:

标签: php digital-signature


【解决方案1】:

有一些可用的软件库可以让您对 PDF 文件进行数字签名。 iText 是其中之一,但还有很多其他的。

但是所有的库都面临一个共同的问题:保护签名者的数字证书,尤其是证书的私钥。

如果签名的 PDF 将被审核或提交给依赖方(接收方),该依赖方(接收方)希望确保 PDF 确实是由声称签署它的人签署的,那么数字证书(和签名系统) 必须是 QSCD - 合格的签名创建设备。 (同一想法的旧名称是 SSCD,“安全签名创建设备”。)

智能卡是创建 QSCD 的旧方法。更现代的是使用集中式签名设备。我的公司 DocuSign 使用 API 制作了 QSCD,其他公司也这样做。

【讨论】:

  • 我对创建基于云的 QSCD 进行了大量研究,我知道您必须使用 openssl_* 来创建 PKI,但现在我不知道如何实际签署文档以及何时签署然后签名,如何解密并确保它是相同的。另外,创建密钥后,如何将它们存储在.pem 文件中?你有任何相关的教程可以帮助吗?我不是为企业建立一个,只是为了签署我亲自发送给人们的任何东西(供个人使用),我将建立一个人们可以用来检查我是否确实签署过的 API。
  • 嗨@KDOT,你的问题需要一本书才能回答。为什么不使用 iText 或竞争对手之类的库?或者通过我们的 API 使用 DocuSign 对文档进行数字签名。请参阅 Express SBS 产品。注意:我为 DocuSign 工作。
  • 出于法律原因,我并不是真的希望使用 QSCD,我只是想使用签署证书的想法来验证它不是假的。这个想法是,工人可以请求他的职位证明,将其提供给另一个机构,然后该机构可以使用 API 来检查该证明是不是假的。我不太确定我是否正确掌握了 QSCD 的概念,我是否可以简单地将数据存储在数据库中,然后制作一个简单的 API,但我也只是希望能够发布 PDF 证书,但又一次,如何确保位置不被篡改?
  • @LarryK - 为什么不使用 DocuSign API?因为他们想要每份签署的文件 3 美元,即使你批量处理,每年也需要 12,000 美元(每月 1,000 美元,他们想要收取 32,400 美元,或每份发送的文件 2.70 美元。这太疯狂了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多