【问题标题】:sslStream.AuthenticateAsClient works on windows 7 but fails on windows 8sslStream.AuthenticateAsClient 在 Windows 7 上工作,但在 Windows 8 上失败
【发布时间】:2013-11-19 19:27:38
【问题描述】:

我有一些 SSL 客户端代码 (C#),如下所示:

X509Certificate2 cert = new X509Certificate2(@"client.pfx"); 

X509Certificate2Collection x09s = new X509Certificate2Collection();

x09s.Add(cert);

TcpClient client = new TcpClient(controllerIP, port);

sslStream = new SslStream(client.GetStream(), false, OnCertificateValidation, 
               new LocalCertificateSelectionCallback(SelectLocalCertificate));
sslStream.AuthenticateAsClient("", x09s, SslProtocols.Default, false);

这是与运行 openssl 的 linux 服务器通信。当客户端是 Windows 7 时,这一切都很好。但是,当我在 Windows 8 客户端上尝试时,AuthenticateAsClient 总是收到一条异常消息:“无法从传输连接中读取数据。连接尝试失败,因为连接方做了一段时间后没有正确响应,或者由于连接的主机没有响应而建立的连接失败。”

LocalCertificateSelectionCallback 函数被调用并正确返回。

Windows 8 发生了什么变化? 谢谢...

【问题讨论】:

    标签: c# ssl ssl-certificate


    【解决方案1】:

    我知道这是一个旧线程,但我仍然在 Windows 10 中得到了相同的答案形式 AuthenticateAsClient。

    当我增加客户端 (TcpClient) 和流(NetworkStream、SslSteram)的响应时间时,AuthenticateAsClient 成功。

    但由于 Windows 10 中的一些奇怪原因,在我处理连接对象(SslStream 和 TcpClient)并尝试再次执行连接步骤后,AuthenticateAsClient 每次都会成功。 (成功,失败,成功,失败......)。

    对于 Windows 7,一切正常。

    【讨论】:

      猜你喜欢
      • 2014-02-06
      • 2011-09-11
      • 1970-01-01
      • 2015-03-13
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 2012-07-04
      • 2014-08-01
      相关资源
      最近更新 更多