那里!我正在使用 pdfbox 1.8.11 进行 pdf 签名,我可以创建一个嵌入 DSS 字典的启用 LTV 的签名。现在的问题是有多个签名时的证书验证。
根据 PDF 2.0 LTV 和 PAdES LTV 规范,允许为每个签名添加 VRI,以便验证每个特定签名的相关撤销数据。
知道如何为签名添加 VRI 字典吗?由于 VRI 的密钥是 base-16 编码的哈希,这意味着我需要先有签名。据我所知(我希望我错了),签名是在将带有签名相关信息的 PDF 保存到输出流中时创建的。( PDDocument.saveIncremental(ins, outs)
)
==================================================== ==========
更详细:
当我想根据 PAdES LTV 和 PDF 2.0 LTV 规范验证 DSS 数据的签名时遇到了这个问题。首先关注的是 PDF 2.0 LTV 规范。
如果我理解正确:
- DSS 包含我们在已签名 PDF 中拥有的所有签名的撤销数据。
我遇到的情况:假设:有两个用户用户A和用户B,他们的证书是由同一个CA颁发的:s。(我认为这很常见。)
- 用户 A 使用 DSS 签署了文档(嵌入了 certs/crls/ocps)。
- 几天后,用户 B 使用 DSS (certs/crls/ocps) 签署了用户 A 签名的文档。注意!:crls 由颁发者标识符标识。
签名验证阶段:
当我想重建证书链时,针对 crls 和 ocsps 验证签名证书,尤其是当我想检查文件签名时 crl 是否过期时,我需要确保我使用的是正确的crl的版本。
对我来说,这意味着我应该检查与签名正确映射的 certs/crls/ocsps。否则验证不再可靠,同样毫无意义。
因此,即使最新的 PAdES 规范 103 不建议使用 VRI。说真的,我觉得不太对……
然后另一个问题:
正如我在下面评论的那样,我正在使用 pdfbox 签署 pdf。
如果我事先收集 DSS 数据,请在之后创建签名。(事实上,DSS 也是签名内容的一部分。)
- 好事:acrobat 阅读器识别出我的签名已启用 LTV。
- 坏事:在这种情况下,我无法在那里添加 VRI。VRI 的密钥是签名的散列值。
如果我先签署文件,然后用 VRI 得到签名和 DSS,acrobat reader 不再识别 DSS。我的签名不再为 acrobat reader 启用 LTV。这是我很困惑的问题。acrobat reader 在 LTV 验证中是否错误?
我觉得错了吗?如果有什么我理解错了,请指出。提前致谢!