You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于CAdES标准的LTV签名实现疑问与方案咨询

CAdES-A 实现检查与遗漏点分析

背景信息

目标

使用SignedCms和CmsSigner在签名中嵌入LTV(长期验证)信息,最终实现Adobe Acrobat中的“LTV enabled”标识,达到CAdES-A归档级别。

当前实现

  • 基于SignedCms和CmsSigner生成PDF基础签名,IncludeOption设置为X509IncludeOption.WholeChain
  • 通过AsnWriter/AsnReader在ASN.1结构的UnsignedAttributes中嵌入TSA时间戳
  • 已在UnsignedAttributes中嵌入以下OID:
    • 1.2.840.113549.1.9.16.2.21(id-aa-ets-certificateRefs)
    • 1.2.840.113549.1.9.16.2.22(id-aa-ets-revocationRefs,达成CAdES-C级别)
    • 1.2.840.113549.1.9.16.2.25(id-aa-ets-escTimeStamp,达成CAdES-X级别)
    • 1.2.840.113549.1.9.16.2.23(id-aa-ets-certValues)
    • 1.2.840.113549.1.9.16.2.24(id-aa-ets-revocationValues,达成CAdES-X Long Type 1级别)
    • 1.2.840.113549.1.9.16.2.48(id-aa-ets-archiveTimeStampV2,目标达成CAdES-A级别)

核心疑问

  1. 已通过WholeChain包含完整证书链,是否仍需在UnsignedAttributes中嵌入证书引用(id-aa-ets-certificateRefs)?
  2. 当前实现是否存在遗漏步骤或合规性错误?

实现检查与建议

1. 证书引用的必要性

即使已通过WholeChain包含完整证书链,必须保留证书引用(id-aa-ets-certificateRefs):

  • CAdES-C及以上规范要求证书引用作为关联后续吊销信息(revocationRefs/revocationValues)的锚点,验证方需要通过它精准匹配证书与对应的吊销状态数据
  • 证书链的存在只是提供了证书实体,而证书引用是标准化的哈希标识,是CAdES层级递进的必要结构,缺失会导致Adobe Acrobat无法识别为合规的CAdES-C及以上级别签名

2. 当前实现的潜在遗漏点

(1)吊销数据的覆盖范围

确保revocationRefs和revocationValues覆盖所有非根证书:

  • 根证书作为信任锚无需提供吊销信息,但签名证书、中间CA证书必须包含对应的OCSP响应或CRL
  • 需逐一验证每个非根证书的吊销数据是否已正确嵌入revocationValues,且revocationRefs中的哈希值与对应吊销数据匹配

(2)归档时间戳的覆盖范围

id-aa-ets-archiveTimeStampV2的签名对象必须覆盖整个CAdES签名结构:

  • 归档时间戳需对完整的CMS SignedData结构(包括基础签名、所有属性、证书链、吊销数据、之前的时间戳等)进行哈希签名,不能仅覆盖部分内容
  • 需验证时间戳的签名对象是否符合RFC 5126的定义,否则Adobe不会认可为合规的CAdES-A签名

(3)属性的顺序与嵌套要求

CAdES属性的添加顺序必须符合规范逻辑:

  1. 基础签名完成后,添加certificateRefs、revocationRefs(达成CAdES-C)
  2. 添加escTimeStamp(达成CAdES-X)
  3. 添加certValues、revocationValues(达成CAdES-X Long Type 1)
  4. 最后添加archiveTimeStampV2(达成CAdES-A)
  • 所有上述属性必须放在UnsignedAttributes中,避免重复添加冲突属性

(4)OCSP响应的有效性

嵌入的OCSP响应需满足以下要求:

  • 由对应CA授权的OCSP服务器签发
  • 响应时间在证书有效期内,且早于签名时间
  • 响应中明确标记证书状态为“未吊销”
  • 确保OCSP响应自身的签名验证通过,否则Adobe会标记LTV验证失败

3. Adobe Acrobat兼容性细节

  • 确保所有ASN.1编码使用DER格式(SignedCms默认支持,但手动修改ASN.1结构时需注意)
  • 检查PDF签名字典中的字段是否符合规范,特别是与LTV相关的/DocTimeStamp等字段需与CAdES属性匹配
  • 可以通过Adobe Acrobat的“签名验证”工具查看详细报告,定位具体的合规性问题

内容的提问来源于stack exchange,提问作者Dimiikou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 03:12:05