【问题标题】:Signing PDFs on a server document using a signature from the user使用用户签名在服务器文档上签名 PDF
【发布时间】:2012-05-18 16:09:26
【问题描述】:

这是我想做的:

  1. 用户创建文档 (html)
  2. 编辑 -> 在服务器上保存 PDF
  3. 询问用户是否要签署文件
    • (是)这就是问题
    • (没有)没问题
  4. ???? (不重要)

所以现在我面临的问题是如何在步骤 3 中执行此操作(是)。如果签名在服务器上没问题,我有一些 html->php->pdf 类可以使用数字签名进行签名,但是签名必须作为文件在服务器上。问题是,我怎样才能直接在服务器上进行。用户选择是,签名被读取(从他的计算机上的阅读器)并发送到服务器并完成签名。在这里,我相信如果没有 Java 之类的东西,我将无法做到这一点。在我看来,PHP 和 JavaScript 肯定不足以完成这个动作。

有没有人遇到过这样的问题?也许一些准备好使用的库?

附:不太确定标签是否正确,但不知道该放哪个。

【问题讨论】:

  • “他电脑上的阅读器”是什么意思?
  • @esej 我猜他的意思是某种包含签名信息的 U 盘。
  • 嗯,这就是整个问题 - 不是吗。
  • @esej 是的,这就是我的意思。签名在 USB 签名阅读器上,例如 hidglobal.com/prod_detail.php?prod_id=182
  • 如果有用户拥有的设备正在执行签名 - 服务器 obv,我无法在此处关注您。做不到。也许您希望服务器创建要签名的摘要? (如果是这样,您需要一些通用的方式来沟通/要求签名)

标签: java php digital-signature signing


【解决方案1】:

如果带有私钥的证书在客户端,那么您需要一个客户端模块来进行签名。 JavaScript 还不够,因为它无法访问客户端上的密钥。虽然您可以尝试调用 CAPICOM from JavaScript,但这是部分(不支持 PKCS#11)、特定于 Windows 且已过时的解决方案。更好的选择是使用 Java 编写的浏览器小程序来执行签名(见下文)。

我们的 SecureBlackbox 产品有一个分布式签名插件,它完全符合您的描述(目前支持 PHP、Java、ASP.NET 和编译模块)。您可以查看该插件的工作原理:

在我们的产品中,我们提供了预构建的浏览器模块 - Java Applet、ActiveX 控件和 Flash 小程序,但 Java 小程序在大多数情况下就足够了,因为它可以访问 Windows 上的 PKCS#11 存储和 Windows 证书存储。对于不支持 Java 小程序的浏览器,SecureBlackbox 允许通过 Java Web Start 将小程序用作外部“应用程序”。

您可能需要重新创建这个完整的方案,但是在服务器上计算哈希并将其传递给客户端进行签名然后将签名嵌入回文档中是一个很大的技巧。

将完整的文档传输到客户端并拥有一个 Java 小程序可能会更容易,该小程序将使用我们的 SecureBlackbox 的 iText 或 Java 版本对该文档进行签名,然后将文档上传回服务器。

【讨论】:

    猜你喜欢
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 2017-10-27
    相关资源
    最近更新 更多