为什么Java在SSL握手时不发送客户端证书?我试图连接到一个安全的网络服务。尽管我的密钥库和信任库设置正确,但我的握手失败了。经过几天的沮丧,无休止的谷歌搜索和询问周围的每个人,我发现唯一的问题是java在握手时没有将客户端证书发送到服务器。具体而言:服务器请求一个客户端证书(cn=rootca)-即“给我一个由根CA签名的证书”Java查看了keystore,只找到了由“SubCA”签名的我的客户端证书,而后者又由“RootCA”颁发。它没有费心去调查信任库.嗯,好吧,我想遗憾的是,当我试图将“SubCA”证书添加到keystore中时,这一点也没有帮助。我确实检查了证书是否加载到keystore中。确实如此,但是KeyManager忽略了除客户端证书之外的所有证书。所有这些都导致了这样一个事实,即java决定它没有任何满足服务器请求的证书,并且没有发送任何.tadaaa握手失败:-(我的问题:我是否可能以“破坏证书链”的方式将“SubCA”证书添加到密钥存储库中,从而使密钥管理器只加载客户端证书而忽略其余的证书?(Chrome和OpenSSL设法解决了这一点,为什么java不能这样做呢?-请注意,“SubCA”证书总是作为受信任的权威单独显示,因此Chrome显然正确地将它与客户端证书一起打包在握手过程中。)这是服务器端的正式“配置问题”吗?服务器是第三方。我希望服务器请求一个由“SubCA”授权机构签名的证书,因为这正是他们提供给我们的。我怀疑这在Chrome和OpenSSL中起作用是因为它们“限制性较小”,而java只是“听天由命”而失败了。我确实找到了一个解决办法,但我不太高兴,所以如果有人能帮我澄清这个问题,我会很高兴的。
添加回答
举报
0/150
提交
取消