0

假设我想使用具有以下证书的 ssl 服务器运行

cacert,
子cacert,

服务器证书

为此,如果我使用 openssl s_server 通过提供 Cert-(server-cert) CAcert- (sub-cacert,cacert)选项来启动 ssl 服务器,以便在客户端连接时显示整个链

我的问题是

将是子 cacert,cacert自动被我的服务器视为受信任...??

我的意思是,如果客户端发送像 (client-cert, sub-cacert,cacert ) 这样的链,客户端的证书验证结果是否会成功..??

如果是这样,我该如何避免这种情况..??我想像在java中一样使用openssl维护单独的trustore

(根据我在java中的理解,客户端收到驻留在密钥库中的证书链,但服务器在验证期间不使用这些证书,并且仅使用信任库进行验证)

我的假设有什么错误..???

提前致谢 :-))

4

2 回答 2

0

是的,sub-cacert 和 cacert 将被信任。

我现在无法立即访问 openssl 来测试它,但是您是否尝试过手动构建您的证书链?

确保您的服务器标识证书采用 PEM 格式,然后按以下顺序将它们复制到单个文件中:

cert
sub-cacert
cacert

(我假设 sub-cacert 是中间,cacert 是根)

或更一般地说

server identity certificate
intermediate certificates
root certificate authority

其中链中的每个证书都必须由其正下方的证书颁发,并且您可以拥有多个中间证书。

尝试使用此串联文件作为您的服务器证书,并仅将您信任的那些证书颁发机构用于客户端证书在 CAfile/CApath 中。

我没有使用 openssl s_server 的经验,但我知道有几个应用程序使用 openssl 进行证书操作,允许您执行此操作。

于 2013-09-09T17:34:34.003 回答
0

这实际上取决于您用于 SSL 的应用程序(Tomcat、WebLogic、自定义等)。

但通常,如果您向客户端提供服务器证书和完整的证书链,并且客户端信任该链中的根证书,那么客户端将信任服务器证书。

同样应该适用于其他方式(客户端到服务器)。

于 2013-09-09T16:44:09.270 回答