好的,所以我有一个多层的ca系统,看起来像这样:
-ROOT_CA
---- intermediate_CA
-------- intermediate_CA2
------------客户证书...
我在middle_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 0xXXXXXXXXX
(显然传入了与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
请注意,最好使用完全独立的密钥对进行签名,但需签名。
客户端连接将如下所示:
$ openssl ocsp -issuer intermediate_ca_2.crt -CApath /path/to/trust/store -cert client.crt -text -url http://localhost:xxxx
关于ssl - 证书通过时OCSP状态未知,序列号通过时状态良好,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25006998/