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

ocsps不显示但我有在DSS

山高峰
2023-03-14

我刚刚签署文件。和添加LTV太(与文档安全故事和TSA);但土坯读者告诉我,LTV是不启用。

我发现了问题。Adobe reader告诉我文档中没有嵌入OCSP。

添加时间戳后,我只需创建DSS字典并添加证书和ocsp响应。

        PDDocumentCatalog catalog = template.getDocumentCatalog();
        COSDictionary catalogDictionary = catalog.getCOSDictionary();
        COSDictionary dssDictionary = new COSDictionary();

        COSArray cosOcsps = CertUtils.getOcspResponseCosArray(ocspResp);
        COSArray cosCerts = CertUtils.getCertificateCosArray(certs);

        dssDictionary.setItem(COSName.getPDFName("Certs"), cosCerts);
        dssDictionary.setItem(COSName.getPDFName("OCSPs"), cosOcsps);
        catalogDictionary.setItem(COSName.getPDFName("DSS"), dssDictionary);

这还不足以增加OCSP吗?

我像Pades BES一样签署文件。它需要VRI吗?我知道id不需要。

这是样品

PDF文件

共有1个答案

濮阳宜
2023-03-14

附件A.1文档安全存储中的规范ETSI TS 102 778-4(又名PAdES第4部分)要求DSS字典中OCSP条目的值为

一组(间接引用)流,每个流包含一个BER编码的在线证书状态协议(OCSP)响应(参见RFC 2560[8])。此数组包含OCSP,可用于验证文档中的任何签名。

另一方面,您只使用了原始OCSPResponse对象中包含的BasicOCSPResponse对象数组。

OCSPResponse ::= SEQUENCE {
  responseStatus OCSPResponseStatus,
  responseBytes  [0] EXPLICIT ResponseBytes OPTIONAL }

ResponseBytes ::= SEQUENCE {
   responseType   OBJECT IDENTIFIER,
   response       OCTET STRING }

For a basic OCSP responder, responseType will be id-pkix-ocsp-basic.

The value for response SHALL be the DER encoding of BasicOCSPResponse.

BasicOCSPResponse ::= SEQUENCE {
  tbsResponseData     ResponseData,
  signatureAlgorithm  AlgorithmIdentifier,
  signature           BIT STRING,
  certs               [0] EXPLICIT SEQUENCE OF Certificate OPTIONAL }

(来自RFC 2560的OCSP响应规范第4.2.1节ASN.1)

可能您不知道您只使用了这个内部对象,因为许多安全库在请求OCSP响应后会打开原始的OCSPResponse,检查包含的OCSPResponseStatus,并且(如果它表示成功)只返回包含的基本cocsspronse或者(否则)抛出一些异常

如果是这种情况,您只需使用ocspresponsetussuccessful(0)BasicOCSPResponse包装在OCSPResponse中,然后将其放入文档。

 类似资料: