【问题标题】:Verify Electronic Signatures with PDFBox使用 PDFBox 验证电子签名
【发布时间】:2018-01-11 15:30:00
【问题描述】:

我的公司已请求从 PDF 表单中提取数据的 Java Web 服务实现,以使用 Apache PDFBox 为客户端操作启动直接处理功能。很容易。困难的部分是我公司的客户代表最终客户提交表格,但必须验证最终客户的签名。

签署这些表格的商业案例是通过非正式的电子签名(湿签名的数字表示)过程,例如 Adob​​e Reader 中带有客户签名图像的签名“印章”,或 iPad 上的触摸屏绘图。到目前为止,我一直无法始终如一地验证这种类型的签名,甚至无法始终如一地维护 PDF 状态,以便在这种类型的签名仪式后 PDFBox 仍然可以读取它。

通过数字签名表单字段验证签名很简单,我已将这一点传达给我们的业务。但是,由于在这些情况下,签名者通常是正在使用的任何机器上的数字证书的所有者,并且假设大多数这些交互将在客户端办公室进行。

我有几个选择:

  1. 弄清楚如何一致地识别电子签名并重现用于客户教育的无损签名仪式。
  2. 如果可能,请更改数字签名表单字段以接受电子签名。
  3. 我有一个使用最新版本的 Acrobat 将图像表单域放在签名区域上的轻微变通方法,它的效果很好,除了一件事:我尝试过的所有软件都将此表单域类型读取为按钮。有没有办法强制它识别图像,或者任何更新的 PDF 阅读软件可以检测这些字段?

我想上传几个示例 PDF,但当然它们都是公司专有信息。可以这么说,我们没有任何向导对表单做出惊人的事情......它们都是您的基本 AcroForms,我正在尝试弄清楚如何配置签名区域。

谢谢。

【问题讨论】:

  • 你想要的真的只是第 3 项问题的答案吗?还是您还想对剩余情况的描述提供一些意见?
  • 我在下面阅读了您的回复,您已经将我一直在努力告诉我们的业务用语言表达出来;电子签名实际上只不过是一个美化的复选框。也就是说,如果您对此流程有任何其他想法或解决方案,我将不胜感激。本质上,他们希望在不提供前端的情况下替换电子签名服务的使用。它并没有让我的任务变得容易得多......
  • 你说这是关于你的公司和你公司的客户。所以你了解每个客户。因此,您可以创建一个小型私有证书颁发机构并自己向您的客户颁发证书。然后,他们可以使用这些证书(以及相关的私钥)进行数字签名。如果您相应地准备了表格,则可以使用 adobe reader。

标签: pdf adobe pdfbox acrobat electronic-signature


【解决方案1】:

关于您的实际问题:

我有一个使用最新版本的 Acrobat 将图像表单域放在签名区域上的轻微解决方法,除了一件事之外效果很好:我尝试过的所有软件都将此表单域类型读取为按钮。有没有办法强制它识别图像,或者任何更新的PDF阅读软件可以检测到这些字段?

任何将这些字段识别为按钮的 PDF 阅读软件都是最新的,至少在这方面,因为...PDF 文件格式中没有“图像表单字段”!

一些 PDF 创建者模拟 使用按钮表单域的图像表单域,该按钮表单域通过 JavaScript 获取图像表单域的行为。当然,这种模拟是不完整的。特别是这样一个字段中的图像不是表单字段的,而只是它的外观

因此,如果要实现从这样的模拟图像表单字段中读取值,则必须提取按钮的外观


对整个场景的一些评论:

...必须验证最终客户的签名。

签署这些表格的商业案例是通过非正式的电子签名(湿签名的数字表示)流程

与基于证书的数字签名相比,您几乎无法对此类应称为“验证”的签名做任何事情。

好的,您可以在 PDF 中的某个模拟图像字段中查找图像,但您不能保证可以在该图像上看到湿签名的人支持该表单中的数据,更不用说确实亲自签名了.就像其他人只是从一些不同的手写签名文档中扫描了该人的签名并使用该扫描填写表格一样......

到目前为止,我无法始终如一地验证这种类型的签名

应该可以提取大多数这样的湿签名

  • 作为直接或间接添加到页面内容的位图图像,
  • 或作为直接或间接添加到某些注释外观(例如按钮)的位图图像,
  • 或作为 Ink 注释的 InkListPath
  • 或作为PolyLine注释的VerticesPath

如果是位图图像,请不要忘记提取图像掩码(如果适用)。许多应用程序用笔颜色填充基本图像,并在掩码中包含实际签名图。

甚至无法始终如一地保持 PDF 状态,以便在这种类型的签名仪式后 PDFBox 仍然可以读取它。

这听起来像是执行签字仪式的软件的不当行为。但是,除非您为此分享示例,否则很难帮助您分析问题。

【讨论】:

    猜你喜欢
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    • 2022-08-06
    • 2012-10-01
    相关资源
    最近更新 更多