1

我正在使用具有 2 个接口的 Scala 语言开发应用程序。第一个应用程序表现为服务器,第二个应用程序表现为客户端。我希望双方都有 HTTPS 安全连接(相互身份验证)。现在,我尝试拆分密钥库,使一个实例包含第一个接口的证书,另一个实例包含第二个接口的证书。因此,我实例化了 KeyStore 的 2 个变量,传递了不同的证书,然后初始化了 2 个不同的 KeyManagerFactory。最后,我初始化了 2 个不同的 SSLContext 以便在 HTTPS 连接中使用它们。启用 ssl: handshake debug 我可以看到:

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

似乎我的应用程序无法满足服务器的 CertificateRequest(此调试与客户端有关),而服务器端的连接顺利。所以,我的问题是:我可以使用两个不同的密钥库(和 KeyManagerFactory)还是 java 不支持?我该怎么做这个操作?

更新

我刚刚读到我只能将一个 KeyStore(我以前的解决方案是一个带有两个证书的 KeyStore)与 X509ExtendedKeyManager 一起使用,并使用方法 chooseClientAlias() 来选择使用什么证书。任何人都知道我该怎么做这个改进?

4

0 回答 0