Linux 中添加的 PDF 签名在 Windows 中视为无效,但证书链都在那里

Hen*_*Law 8 pdf certificate adobe-acrobat

我使用 JsignPDF 和我的 Globalsign 证书在 Linux 中签署了 PDF 文档;一切看起来都井然有序,请参阅:

# pdfsig test_signed.pdf
Digital Signature Info of: test_signed.pdf
Signature #1:
  - Signer Certificate Common Name: blah@example.com
  - Signer full Distinguished Name: E=blah@example.com,CN=blah@example.com
  - Signing Time: Oct 04 2023 19:10:32
  - Signing Hash Algorithm: SHA1
  - Signature Type: adbe.pkcs7.detached
  - Signed Ranges: [0 - 160], [30162 - 38375]
  - Total document signed
  - Signature Validation: Signature is Valid.
  - Certificate Validation: Certificate is Trusted.

("blah@example.com" is masking my real address)
Run Code Online (Sandbox Code Playgroud)

我将其移至我的 Windows 10 计算机上并在 Acrobat Reader 中打开它,它告诉我“文档认证的有效性未知。作者无法验证”。在阅读器中打开签名面板告诉我“签名有效性未知”。

我单击签名面板中的“证书详细信息”,这会打开证书查看器。链中共有三个条目:底部是我自己的签名,显示由 发布GlobalSign GCC R3 PersonalSign 1 CA 2020。接下来是 PersonalSign 证书(当然),显示为由“GlobalSign Root CA - R3”颁发,并且位于树的顶部是GlobalSign Root CA - R3。在所有情况下“所选的证书路径都是有效的”。这一切都在预料之中。

在 Windows 证书存储中,我确实看到了“GlobalSign Root CA - R3”。

因此,AcrobatReader 告诉我,使用证书执行的签名无效,该证书的链包含 Windows 存储中的有效证书。关于如何调试这个有什么想法吗?

Aus*_*arn 19

确切的消息说有效性未知,而不是签名无效。这在技术上是正确的,因为已知您使用的签名算法 (SHA-1) 已损坏,这意味着无论证书链的表面有效性如何,使用该算法的任何签名都无法信任。

\n

SHA-1 被破坏的具体细节在这里有点偏离主题,但简短的解释是它\xe2\x80\x99s 已被证明可以与其综合产生哈希冲突(事实上,原始演示这是使用 PDF 文档完成的),这意味着\xe2\x80\x99s 不可能确定该文档与签名时相同(这反过来意味着用它签名可以\xe2\ x80\x99 不可信)。

\n

尝试使用已知损坏的较新算法(例如 SHA-256)对文档进行签名,您可能会看到签名正确列出为有效。

\n


har*_*ymc -1

Globalsign 未列在 Adob​​e 批准的信任列表成员中,这可能就是 Reader 不接受其证书链的原因。

要添加受信任的证书,以下过程可能适合您:

  • 在阅读器中打开文档
  • 右键单击签名并选择“显示签名属性...”
  • 单击“显示签名者证书”(如果所有其他按钮均呈灰色,您可能需要单击“验证签名”)
  • 在“证书查看器”窗口中,转到“信任”选项卡
  • 单击“添加到受信任的证书”
  • 单击“确定”以获取警告
  • 选中“导入联系人设置”窗口中的所有复选框,然后单击“确定”
  • 返回“签名属性”窗口,单击“验证签名”
  • 如果该过程成功,则现在将验证签名。

您可以在文章“在 acrobat Reader 中验证数字签名”中找到该过程的详细说明和屏幕截图,以帮助完成此过程(尽管可能与您的情况存在一些细微的差异) 。

  • **GlobalSign 列在该页面** - 只需查看美国部分即可。 (10认同)