【问题标题】:SSL client SSPI error on Windows 7Windows 7 上的 SSL 客户端 SSPI 错误
【发布时间】:2012-10-14 11:40:08
【问题描述】:

我用 C#.NET Win-Forms 编写了一个 SSL 客户端。我将我的证书(公钥)添加到系统根存储(通过 .NET 代码或通过 Internet Explorer 手动,两者都有效)并且它在 Windows XP 上运行良好,但在 Windows 7 上具有以下 AuthenticationException 时尝试AuthenticateAsClient() :
"客户端和服务器无法通信,因为它们没有共同的算法"

Microsoft 支持文档列出一些注册表项,并说明在 Windows 7 中默认启用(新的强项)或禁用(旧的过时的)的协议/密码/算法,因此我们可以通过编辑启用/禁用它们注册表。以下是这些链接:

How to restrict the use of certain cryptographic algorithms and protocols in Schannel.dll TLS/SSL Cryptographic Enhancements

就我不擅长密码学而言,我无法理解哪个注册表项与我的案例匹配。这是我用作客户端的 X509Certificate 对象的属性:

SignatureAlgorithm.FriendlyName : "sha1RSA"
版本:3

有人可以帮忙吗?

【问题讨论】:

    标签: c# .net ssl sspi


    【解决方案1】:

    在努力解决 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 - 与注册表不同,您必须立即重新启动计算机才能使更改生效。

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-14
        • 1970-01-01
        • 1970-01-01
        • 2011-07-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多