0

目前我在服务器和客户端上启用相互 SSL 时遇到问题。

在服务器端,我使用启用 ClientAuth 配置 tomcat 并将客户端的证书配置到信任库。

所以在 ssl 握手期间,我可以看到服务器的证书请求:

 [java] *** CertificateRequest
   [java] Cert Types: RSA, DSS, ECDSA
   [java] Supported Signature Algorithms: SHA512withECDSA, SHA512withRSA, SHA384withECDSA, SHA384withRSA, SHA256withECDSA, SHA256withRSA, SHA256withDSA, SHA224withECDSA, SHA224withRSA, SHA224withDSA, SHA1withECDSA, SHA1withRSA, SHA1withDSA
   [java] Cert Authorities:
   [java] <CN=https-test.domain.com, O=Domain.com, L= XX, ST=XX, C=US>

我们可以看到服务器正在使用 Subject Distinguish Name 请求证书。但是在客户端,当客户端过滤密钥时,它会将 DN 视为颁发者 DN,请参见此处的代码:http: //grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6- b14/sun/security/ssl/SunX509KeyManagerImpl.java#378

所以这会导致一个问题:

[java] Warning: no suitable certificate found - continuing without client authentication
   [java] *** Certificate chain
   [java] <Empty>
   [java] ***

所以握手失败了。

以下是一些证书信息:

Issuer: DC=com, DC=domain, CN=Domain. com Security
Subject: C=US, ST=XX, L=XX, O=Domain.com, CN=https-test.domain.com

我的问题是为什么服务器使用主题 DN 请求客户端证书,但客户端将使用 IssuerDN 过滤?

为了让他们成功连接,我需要使用客户端的父证书配置我的服务器的信任库,其主题 DN 与颁发者相同:DC=com、DC=domain、CN=Domain。com 安全

对此有任何想法吗?我可能对此有一些误解,但仍然想知道为什么。

4

0 回答 0