当前位置: 首页 > 知识库问答 >
问题:

LTV启用PDF格式的签名

姚飞昂
2023-03-14

据我所知有两种方法

  • 添加DSS字典
  • 在签名时在签名中嵌入CRL或OCSP响应

DSS方法似乎是可行的,Adobe将签名识别为启用了LTV。第二种方法更适合我们的应用程序,所以我仍在努力让它工作。我在向签名添加OCSP响应时遇到了问题,所以我只尝试添加证书和CRL。如果我错了,请纠正我,但据我所知,CRL或OCSP响应都应该添加到签名中。不需要两者兼而有之吗?我收集签名证书及其根证书,还有TSA证书及其根证书。之后,我获取所有的CRL。所有这些都在签名和时间戳之前添加。只添加证书和CRL似乎不起作用,因为Adobe没有将签名识别为启用LTV。我真的不明白我做错了什么,所以感谢任何帮助!

Store crlStore = new JcaCRLStore(crls); 
gen.addCRLs(crlStore);

Store certStore = new JcaCertStore(certList); 
gen.addCertificates(certStore);

共有1个答案

吴城
2023-03-14

错误之处在于将CRL放入通常用于CRL的CMS签名容器元素中。然而,在集成PDF签名的情况下,情况就不同了;在这里,CRL应该在一个特殊的有符号属性中。

查看ISO 32000-1,其中已经指定了该属性:

PKCS#7对象应包含以下内容:

......

  • 作为签名属性的撤销信息(PDF 1.6):该属性可能包括对签名者的证书及其签发者证书进行撤销检查所必需的所有撤销信息。由于撤销信息是一个签名属性,因此必须在数字签名的计算之前获得。这意味着签名者使用的软件必须能够构造认证路径和相关的撤销信息。如果其中一个元素无法获得(例如不可能连接),则具有该属性的签名将是不可能的。

......

adbe吊销信息属性:

adbe-revocationInfoArchival OBJECT IDENTIFIER ::=
                              { adbe(1.2.840.113583) acrobat(1) security(1) 8 }

吊销信息属性的值可以包括以下任何数据类型:

  • RFC 3280(参见参考书目)中描述的证书撤销列表(CRL):CRL通常较大,因此不应嵌入PKCS#7对象中
  • RFC 2560,X.509 Internet公钥基础设施在线证书状态协议(OCSP)中描述的在线证书状态协议(OCSP)响应(参见参考文献):这些响应通常较小且大小恒定,应该是PKCS#7对象中包含的数据类型
  • 自定义撤销信息:本规范未规定该格式,但该格式可以编码为八位字节字符串。应用程序应该能够通过查看相关的对象标识符来确定八位字节字符串中包含的数据类型

adbe的吊销信息属性值具有ASN。1类撤销:

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
  Value OCTET STRING
}
 类似资料:
  • 我想知道是否有一个替代包括完整的CRL同时仍然支持LTV?包含完整的CRL似乎有点矫枉过正,而似乎唯一需要的“东西”是包含一个可验证的证明,证明链中的证书在签名时没有被撤销。我认为使用OCSP可能会提供这样的功能,但是简单地删除CRL并包含一个OcspClientBouncyCastle实例并不能起到作用。授予SignDetached的OCSP是否用于检查证书是否在签名时被吊销? 一个相关的问题涉

  • 我正在生成一个带有签名的PDF文档,我希望它启用LTV。为此,我在创建PDF时对其进行签名,然后添加包含DSS的第二个版本,其中包含与验证相关的信息(VRI)。正如我在一些文章中发现的,我需要添加证书链(没有根证书颁发机构)和证书吊销列表(CRL)。在我的例子中,两者都有两个元素。之后,我添加了VRI条目,它是签名内容(在/Contents中的第一个PDF版本中找到)的SHA-1散列,其值引用上述

  • 我试图签署一个pdf与时间戳和LTV启用,以便它是这样显示在Adobe Reader: 在英语中,它意味着“签名包括嵌入的时间戳”和“签名启用了LTV”。下面是我使用的代码: 基于此答案,我需要一种方法将TSA证书的CRL获取到,但是。。如何获得TSA证书?我是否需要向TSA发出请求并读取响应,然后将其添加到?注意,这已经在。请注意,我使用的是免费的TSA服务器。 更新 因为它是一个免费的TSA服

  • 我正试图用BouncyCastle CMS签署一份PDF文件。签名有效,但Adobe Reader告诉我它还没有准备好LTV。 据我所知,CRL嵌入在CMS SignedData中。证书也被嵌入其中。还嵌入了时间戳。 签名是一个分离的签名,放在“预留空间”。 为什么签名还没有准备好?我是不是做错了什么? 签名测试-PDF:http://www.filedropper.com/outputx 代码:

  • 我正在使用iText 5.5.3来签署PDF文档。我需要这些文件是时间戳和LTV启用。我按照说明使用addLtv方法(代码示例5.9,Lowagie白皮书第137页)。我得到一个带有2个签名的PDF,这是正常的:第一个是我自己的签名,第二个是文档级时间戳。 但是,Acrobat告诉我我的签名启用了LTV,但时间戳签名没有: 图片来自Acrobat Pro XIhttp://img15.hostin

  • 我想实现PDF的“并行”签名过程,这样用户就可以对文档进行数字签名,而不是“一个一个”,而是同时进行。为了实现这一点,我决定为所有用户创建初始文档的单独副本,并在其上获得签名。最终,所有签名都应该连接到单个PDF中。 让我们假设,除了签名字段创建(所有的acroForms、signatureContainers、可视签名等都是在之前创建的,并且都是类似的),在签名过程中PDF没有改变。 在进一步的