1

我正在尝试使用 Apache 的 PDFBox Detached Signature 和用于加密签名本身的 BouncyCastle API 创建启用 LTV 的 PDF 签名。

到目前为止,我能够按照以下步骤使 Adob​​e Reader 显示“Signature is LTV enabled”消息:

  1. 检索签名证书的完整链和时间戳授权证书的完整链(用于在步骤 #4 中添加签名的时间戳)的撤销信息(CRL 和 OCSP 响应,当然根证书除外)

  2. 包括在步骤 #1 中检索到的撤销信息作为签名属性,以 Adob​​e OID“1.2.840.113583”格式计算:

    adbe-revocationInfoArchival OBJECT IDENTIFIER ::= { 
    adbe(1.2.840.113583) acrobat(1) security(1) 8 }
    
    RevocationInfoArchival ::= SEQUENCE {
    
      crl  [0] EXPLICIT SEQUENCE of CRLs OPTIONAL,
    
      ocsp  [1] EXPLICIT SEQUENCE of OCSP Responses OPTIONAL,
    
      otherRevInfo [2] EXPLICIT SEQUENCE of OtherRevInfo OPTIONAL 
    }
    
    OtherRevInfo ::= SEQUENCE {
      Type  OBJECT IDENTIFIER
      ValValue OCTET STRING
    }
    
  3. 执行签名

  4. 在第 3 步生成的签名中嵌入一个合格的时间戳

前面步骤的输出在 Adob​​e Reader 中为我提供了“LTV 已启用”状态:

Adobe LTV

当我检查 Adob​​e Reader 用于验证证书链有效性的数据时,它会显示预期的“所选证书被认为是有效的,因为它没有被撤销,因为它使用嵌入在签名中的在线证书状态协议 (OCSP) 响应进行了验证。 "

签名证书链吊销位置

但是,当我对时间戳权威的证书链执行相同的检查时,它会显示“所选证书被认为是有效的,因为它没有被撤销,因为它没有被撤销,因为它使用在线获得的在线证书状态协议 (OCSP) 进行了实时验证。”

时间戳证书链吊销位置

签名者的链嵌入式 CRL/OCSP 被成功使用,但嵌入式 TSA 的链 CRL/OCSP 没有成功使用。

这就引出了一些需要回答的问题:

  • 为什么不使用 TSA 嵌入式 CRL/OCSP?
  • 我必须将它们放在其他地方吗?如果有,在哪里?
  • 或者我是否必须要求时间戳授权将 CRL 和/或 OCSP 响应作为时间戳令牌中的签名属性返回?
4

0 回答 0