Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.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
Ssl OCSP通过证书时状态未知,通过串行证书时状态良好_Ssl_Cryptography_Openssl_Certificate_Ocsp - Fatal编程技术网

Ssl OCSP通过证书时状态未知,通过串行证书时状态良好

Ssl OCSP通过证书时状态未知,通过串行证书时状态良好,ssl,cryptography,openssl,certificate,ocsp,Ssl,Cryptography,Openssl,Certificate,Ocsp,好的,我有一个多层ca系统,看起来像这样: -根癌 ----中成药 --------中间钙 ------------客户端证书 我在intermediate_CA2上设置了一个OCSP响应程序,其启动方式如下: $ openssl ocsp -index intermedia_ca_2_index.txt -CA ca_crt_chain.crt -rsigner intermedia_ca_2.crt -rkey intermedia_ca_2.key -port xxxx -text

好的,我有一个多层ca系统,看起来像这样:

-根癌

----中成药

--------中间钙

------------客户端证书

我在intermediate_CA2上设置了一个OCSP响应程序,其启动方式如下:

$ openssl ocsp -index intermedia_ca_2_index.txt -CA ca_crt_chain.crt -rsigner intermedia_ca_2.crt     -rkey intermedia_ca_2.key -port xxxx -text
在客户端,我发出如下ocsp请求:

$ openssl ocsp -issuer ca_crt_chain.crt -CAfile ca_crt_chain.crt -cert client.crt -text -host localhost:xxxx -verify_other... -trust_other
请注意,client.crt只是客户机证书,而不是整个链,尽管我已经尝试了两种方法,但都不起作用。它总是回来

Response verify OK
client.crt: unknown
如果我将
-cert client.crt
更改为
-serial 0xxxxxxxxx
(显然传递了一个有效的序列,以响应client.crt),那么一切都可以使用:

Response verify OK
0xXXXXXXXXX: good 
奇怪的是,如果我检查第一个示例中的请求,它确实发送了正确的序列号


我一辈子都搞不清楚这件事。有什么想法吗?

所以解决方案是openssl ocsp显然不喜欢链文件。所以我的服务器调用现在看起来像这样:

$ openssl ocsp -index intermedia_ca_2_index.txt -CA intermediate_ca_2.crt -rsigner intermedia_ca_2.crt -rkey intermedia_ca_2.key -port xxxx -text
请注意,最好是使用一个完全独立的密钥对进行签名,但w/e

然后,客户端连接将如下所示:

$ openssl ocsp -issuer intermediate_ca_2.crt -CApath /path/to/trust/store -cert client.crt -text -url http://localhost:xxxx

这只是一个想法,但可能是您还必须明确信任服务器上链中的一个证书吗?我使用多个-verify_其他选项(每个ca证书一个)和-trust_其他选项。尝试将传递给
颁发者的文件更改为仅包含
中间\u CA2
,而不是整个链。确实,解决方案的一部分。显然,openssl ocsp不太喜欢证书链。