Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pdf 无法在Adobe Reader中获取要验证的嵌入式OCSP_Pdf_Bouncycastle_Pdfbox_Sign_Ocsp - Fatal编程技术网

Pdf 无法在Adobe Reader中获取要验证的嵌入式OCSP

Pdf 无法在Adobe Reader中获取要验证的嵌入式OCSP,pdf,bouncycastle,pdfbox,sign,ocsp,Pdf,Bouncycastle,Pdfbox,Sign,Ocsp,我正在用Bouncy Castle签署一份PDF,并在PKCS7中嵌入一个OCSP响应。我用PDFBox组装了签名的PDF,但我无法在Adobe Reader中正确验证生成的文件,因为OCSP无法识别。由于OCSP响应程序需要签名请求,因此我必须将响应嵌入文件中 如果有人能提出任何建议,我将不胜感激 我认为查看实际签名/证书/OCSP比查看代码更容易。已签名的PDF可在以下位置获得: Base64编码的签名如下: 编辑: 当我在Adobe Reader中查看证书并检查吊销>遇到的问题时,它会显示

我正在用Bouncy Castle签署一份PDF,并在PKCS7中嵌入一个OCSP响应。我用PDFBox组装了签名的PDF,但我无法在Adobe Reader中正确验证生成的文件,因为OCSP无法识别。由于OCSP响应程序需要签名请求,因此我必须将响应嵌入文件中

如果有人能提出任何建议,我将不胜感激

我认为查看实际签名/证书/OCSP比查看代码更容易。已签名的PDF可在以下位置获得:

Base64编码的签名如下:

编辑:

当我在Adobe Reader中查看证书并检查吊销>遇到的问题时,它会显示:

Certificate is not valid for the usage. Must sign the request.
撤销条款还规定:

An attempt was made to determine whether the certificate is valid by doing 
a revocation check using the Online Certificate Status Protocol (OCSP).
因此,似乎完全跳过了嵌入式OCSP

编辑2:

根据mkl的建议,我通过更改以下行更新了nonce扩展:

DEROctetString extValue = new DEROctetString(nonce);
为此:

DEROctetString extValue = new DEROctetString(new DEROctetString(nonce)));
导致以下DER结构:

[1] (1 elem)
  SEQUENCE (1 elem)
    SEQUENCE (2 elem)
      OBJECT IDENTIFIER 1.3.6.1.5.5.7.48.1.2ocspNonce(OCSP)
      OCTET STRING (1 elem)
        OCTET STRING IKhVULz41m7JWTa4swZXJPBm6Zs=
Root CA -> Bank (on EU Trust List) -> My Company
Root CA -> External company (cert marked for OCSP signing)
但我仍然在AdobeReader中收到相同的错误消息。我已附上更新的文件和base64编码签名:

编辑3:

我将该文件与另一个没有嵌入OCSP响应的版本进行了比较,在Adobe Reader中遇到的Prolems中发现了以下错误:

Must sign the request.
这让我相信,最初错误的第一部分确实是因为试图验证嵌入式OCSP响应:

Certificate is not valid for the usage. 
我猜有问题的证书将是OCSP响应的签名证书。我自己的文档使用以下证书结构签名:

[1] (1 elem)
  SEQUENCE (1 elem)
    SEQUENCE (2 elem)
      OBJECT IDENTIFIER 1.3.6.1.5.5.7.48.1.2ocspNonce(OCSP)
      OCTET STRING (1 elem)
        OCTET STRING IKhVULz41m7JWTa4swZXJPBm6Zs=
Root CA -> Bank (on EU Trust List) -> My Company
Root CA -> External company (cert marked for OCSP signing)
OCSP采用以下结构签署:

[1] (1 elem)
  SEQUENCE (1 elem)
    SEQUENCE (2 elem)
      OBJECT IDENTIFIER 1.3.6.1.5.5.7.48.1.2ocspNonce(OCSP)
      OCTET STRING (1 elem)
        OCTET STRING IKhVULz41m7JWTa4swZXJPBm6Zs=
Root CA -> Bank (on EU Trust List) -> My Company
Root CA -> External company (cert marked for OCSP signing)
文档签名链中的中间证书是否使OCSP签名无效?或者,我可以以某种方式包括证书链的缺失部分,以使其生效吗?或者这可能不是问题所在?

OCSP Nonce编码 OCSP响应中的nonce扩展的编码如下:

3405   45:                                   [1] {
3407   43:                                     SEQUENCE {
3409   41:                                       SEQUENCE {
3411    9:                                         OBJECT IDENTIFIER
         :                                           ocspNonce (1 3 6 1 5 5 7 48 1 2)
3422   28:                                         OCTET STRING 'EZrf5DVM/y1QFGUfydwBSOsxZ6s='
         :                                         }
         :                                       }
         :                                     }
这很可能对应于在请求中发送的nonce扩展名

不过,请记住,扩展名的值根据定义包装在八位字节字符串中。因此,实际的nonce值是由字符EZrf5DVM/y1QFGUfydwBSOsxZ6s=的ASCII值给出的字节序列,即就ASN.1而言,完全非类型化的内容

但是RFC6960为nonce扩展指定RFC2560中缺少的ASN.1语法

RFC 6960第1节和第4.4.1节

因此,就ASN.1而言,nonce值必须是八位字节字符串,而不是非类型化的

因此,请尝试将您为nonce选择的值包装在一个八位字节流中,根据扩展定义,该八位字节流将被包装在另一个八位字节流中

所有证书的吊销信息 要使验证在没有其他吊销信息请求的情况下成功,签名必须包含所有相关证书的吊销信息,但受信任的根证书和其他相应标记的证书除外

因此,您不仅需要签名者证书和中间银行证书的吊销信息,还需要嵌入式OCSP响应的OCSP证书的吊销信息,除非它们具有id pkix OCSP nocheck扩展

如果我正确读取了ASN.1转储,则您的OCSP证书没有该扩展名。因此,Adobe Reader将尝试在线接收其吊销信息,如果这不起作用,它将不会使用嵌入的OCSP响应

OCSP服务TLS证书 因为您的签名并没有带来所有必需的撤销信息。AdobeReader尝试在线接收它们。这样做时,它会出错

我得到的详细错误信息如下

证书对于该用法无效____________________________________________________________

证书对于该用法无效____________________________________________________________

SSL证书错误

事实上,在尝试手动访问OCSP服务器的URL时,我还被告知证书问题


您似乎遇到了不同的错误。您是否在计算机或Adobe Reader上安装并信任某些特殊证书?

查看此线程。。。joelgeraci:谢谢,但是他们正在讨论AdobeReader9.X和BER解码错误中的错误——和我遇到的问题不一样。谢谢你的回答。你能看看我问题中的编辑2,看看我是否理解正确吗?如果是这样,它似乎不是验证错误的罪魁祸首。@benwixen您正确地理解了我;许多实现者都犯过这个错误。已经澄清了,我将编辑答案,以讨论为什么修复不足以解决问题。非常感谢您的回答。事实证明,它现在基本上是不可修复的,但提供商正在进行一些更新,这些更新应该可以解决我的问题 未来