2

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

-ROOT_CA

----中级_CA

--------中级_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 

奇怪的是,如果我检查第一个示例中的请求,它确实发送了正确的序列号。

我这辈子都想不通。有任何想法吗?

4

1 回答 1

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

请注意,最好使用完全独立的密钥对进行签名,但 w/e.

客户端连接将如下所示:

$ openssl ocsp -issuer intermediate_ca_2.crt -CApath /path/to/trust/store -cert client.crt -text -url http://localhost:xxxx
于 2014-07-30T00:22:12.527 回答