我用 C#.NET Win-Forms 编写了一个 SSL 客户端。我将我的证书(公钥)添加到系统根存储(通过 .NET 代码或通过 Internet Explorer 手动,两者都有效)并且它在 Windows XP 上运行良好,但在 Windows 7 上尝试AuthenticateAsClient()时出现以下AuthenticationException:
“客户端和服务器无法通信,因为它们没有共同的算法”
Microsoft 支持列出一些注册表项的文档,并说明在 Windows 7 中默认启用(新的强项)或禁用(旧的过时的)的协议/密码/算法,因此我们可以通过编辑注册表来启用/禁用它们。这是这些链接:
如何限制在 Schannel.dll 中使用某些加密算法和协议 TLS/SSL 加密增强
就我不擅长密码学而言,我无法理解哪个注册表项与我的案例匹配。这是我用作客户端的 X509Certificate 对象的属性:
SignatureAlgorithm.FriendlyName:“ sha1RSA ”
版本:3
有人可以帮忙吗?