我在我们的一个项目中遇到了SSL握手的问题,需要2个SSL证书。
安全协议设置为TLS12(并与其他协议测试以及TLS1,SSL3),并且认证回调也正确完成。问题是该代码在工作站上可以工作,但在任何服务器上都不能工作(win 2008或2012)。
我们收到的错误是。 The request was aborted: Could not create SSL/TLS secure channel.
实际上我们在任何服务器上都没有得到任何服务器证书回调。
以下是我们加载证书时的代码片段。我们使用的是.NET框架。
cert = new X509Certificate2("certpath", "pass", X509KeyStorageFlags.DefaultKeySet)
client.ClientCertificates.Add(cert);
看起来证书链是正常的,因为我们可以通过浏览器访问WSDL。
总结一下。 我们可以通过工作站访问端点,但不能通过服务器访问。然而,终端可以从浏览器访问(选择证书后)。
Lex Li给我指出了正确的方向。当使用wireshark时,我注意到客户端Hello(我的客户端在2008 R2和2012 R2服务器上运行)到达目的服务器,但它返回握手失败。
经过详细检查,我发现2008 R2服务器(或2012 R2服务器)上的客户端应用的Cipher Suite与目标服务器上的Cipher Suite不一致。