好的,所以我有一个多层的ca系统,如下所示:
-ROOT_CA
---- intermediate_CA
-------- intermediate_CA2
------------客户证书......
我在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 0xXXXXXXXXX
(显然传递了一个有效的序列号,它可以同时响应client.crt),那么一切都可以使用:
Response verify OK
0xXXXXXXXXX: good
奇怪的是,如果我在第一个例子中检查请求,它确实发送了正确的序列。
我不能为我的生活弄清楚这一点。有什么想法吗?
答案 0 :(得分:2)
所以解决方案是显然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