0

我刚刚签了文件。并添加 LTV(使用 Document Secure Story 和 TSA);但 adobe reader 告诉我 LTV 未启用。

我发现了问题。Adobe 阅读器告诉我 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文件

4

1 回答 1

1

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

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

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

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,并且(如果它指示成功)只返回包含的BasicOCSPResponse或(否则)抛出一些异常。

如果是这种情况,您可以在将其放入文档之前简单地将其包装BasicOCSPResponseOCSPResponseusingOCSPResponseStatus值中。successful (0)

于 2013-07-24T08:17:36.890 回答