合格签名仅在 Adob​​e Reader 中显示无效

Mar*_*ala 0 pdf adobe itext digital-signature pades

这是带有合格电子签名的 PDF pdf-qualified.invalid.pdf

所有验证应用程序均将其显示为 PAdES-BASELINE-LT,但 Adob​​e Reader 将其显示为无效。这个经过数字签名的 PDF 有什么问题吗?它包括 CAdES-BASELINE-LT 签名、所有 OCSP、所有需要的证书。

Adobe reader显示无效

Adobe Reader 错误地显示无效

欧盟验证显示签名有效,网址为https://ec.europa.eu/cefdigital/DSS/webapp-demo/validation

欧盟验证器显示有效

DigiDoc4 应用程序显示签名有效

DigiDoc4显示有效

https://www.eparaksts.lv/显示有效

eparaksts.lv 显示有效

这里我们可以看到与数字签名相关的PDF结构

iText Rups 在那里显示所有需要的组件

mkl*_*mkl 5

PDF 中嵌入的签名容器存在一些问题。

您的 PDF 版本为 1.5,签名使用子过滤器ETSI.CAdES.detached。因此,嵌入式签名容器应符合 ETSI EN 319 142-1(PAdES 构建块),该标准也参考 ETSI EN 319 122-1(CAdES 构建块)。但也存在偏差:

首先,CMSVersion 应设置为 1 或 3 (CAdES 4.4)。但在你的情况下它被设置为 5。

然后 SignedData.crls 包含条目,特别是其他类型的条目。在 PAdES 的情况下,无论如何都不应该使用该字段,特别是不应该与此类条目一起使用。实际上,此条目是上述无效 CMSVersion 的原因:如果 SignedData.crls 包含类型为 other 的条目,则 RFC 5652 需要版本 5。

签名容器的 SignerInfo 包含签名时间签名属性。PAdES BASELINE 签名 (PAdES 6.3) 明确禁止这样做。

它还包含 cmsAlgorithmProtection 签名属性。虽然没有明确禁止,但该属性不在 PAdES (PAdES 5.2) 中可以使用的属性列表中。

此外,嵌入式证书中至少存在一个问题:其中一个证书有一长串扩展密钥用途,时间戳就是其中之一。但扩展的密钥用法只能单独使用。

这是我停止寻找进一步问题的地方,因此列表可能不完整。您可能应该首先使用不太复杂的签名容器,然后(当可行时)尝试一一添加额外的功能,以检查它们是否意味着 Adob​​e Reader 出现问题。

顺便说一句,这样的问题实际上可能是由于 Adob​​e Reader 不支持您签名中使用的某些算法所致;Adobe Reader 支持的加密算法列表非常短,不支持欧盟允许的合格签名的许多算法。

  • 这里有很好的详细信息:) (2认同)