0

我用 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

有人可以帮忙吗?

4

2 回答 2

0

服务器可能尝试使用 AES 密码协商 SSLv3.0 连接。这种组合在技术上是非法的。请参阅http://blogs.msdn.com/b/ieinternals/archive/2009/12/08/aes-is-not-a-valid-cipher-for-sslv3.aspx?Redirected=true

于 2014-04-01T16:06:48.110 回答
0

在与 Windows 注册表项和值(有效,但不合逻辑,例如禁用其他一些项目!)苦苦挣扎之后,我通过启用和编辑Windows Cipher Suite Order解决了这个问题,而不更改注册表中的任何内容。

指示:

1 -在开始 > 运行...中输入gpedit.msc本地组策略编辑器打开。2 - 转到计算机配置 > 管理模板 > 网络 > SSL 配置设置。 3 - 双击右侧的SSL Cipher Suite Order项目。 4 -在打开的窗口中选择启用单选按钮。在左中部有一个文本框,其中包含一些逗号分隔的文本。在空白的记事本窗口中复制/粘贴文本。 5 - 首先移动您想要的项目(在我的情况下:TLS_RSA_WITH_RC4_128_SHASSL_CK_RC4_128_WITH_MD5) 6 - 用新文本替换旧文本。




7 - 与注册表不同,您必须立即重新启动计算机才能使更改生效。

希望能帮助到你。

于 2013-10-19T06:03:53.140 回答