以下是我在Windows 10上为客户端/服务器控制台应用程序进行相互SSL身份验证的安装程序:
服务器代码:
sslStream.AuthenticateAsServer(certificate, true, SslProtocols.Tls, true);
客户代码:
sslStream.AuthenticateAsClient(hostName, certificates, SslProtocols.Tls12, true);
错误:
异常:对SSPI的调用失败,请参阅内部异常。
内部异常:客户端和服务器无法通信,因为它们没有通用算法
问题:
当我将SslProtocols在客户端和服务器中更改为相同时,即TLS 1.0时,SSL握手成功。 当客户端和服务器上的SSL协议不同时,为什么握手失败?
答案 0 :(得分:2)
协议必须相同。您必须“协商”服务器和客户端之间的通用协议,否则他们无法使用相同的语言。 SslProtocols
枚举标记为[Flags]
,以便您可以指定多个协议,例如SslProtocols.Tls | SslProtocols.Tls12