我目前正在使用 Java 开发 SSL 客户端,需要与需要客户端身份验证的第三方服务器建立 https 连接。服务器人员给了我一个受信任的根 CA 证书,用于签署客户端和服务器证书。我已将此证书放在我身边的信任库中。服务器人员也有这个根 CA 证书,他们用它来验证客户端证书。
当我尝试建立 SSL 连接服务器时,我看到当服务器发送它的证书并且我的客户端能够成功验证它时,握手顺利进行。但作为“证书请求”消息的一部分,服务器不会在“证书权限”参数中返回任何根 CA 证书。因此,我的客户端不会将客户端证书发送回服务器并且握手失败。
我正在使用 WSDL 存根编写标准 Java 代码。我正在利用 wsdl2Java ant 任务生成的 wsdl 存根。
所以我的问题是:即使服务器在请求客户端身份验证时发送空的“证书颁发机构”列表,我是否可以让我的 java 客户端将预设的客户端证书发送回服务器。(我阅读了 TLS RFC,我发现服务器发送这样的空列表是合法的,在这种情况下,客户端可以发回它认为合适的任何证书。我正在尝试实现完全相同的行为)。