【发布时间】:2017-05-31 08:44:43
【问题描述】:
我有一个 .NET C# 应用程序,它使用 2-way SSL(客户端证书)连接到远程肥皂网络服务以进行身份验证。该应用程序在 Windows Server 2008 R2 系统上的 IIS 7.5 上运行。已安装 Internet Explorer 11。
由于我们的 IT 部门设置了以下注册表项,因此远程服务器返回一个错误,指出我们的客户端未提供证书。 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 "SchUseStrongCrypto"=dword:00000001
IE 有同样的问题,直到我在高级属性中禁用 TLSv1.2。 Firefox 和 Chrome 都可以工作。
套件的远程服务器优先顺序配置如下: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027) TLS_RSA_WITH_AES_128_GCM_SHA256 (0x9c) TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030) TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028) TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
我创建了一个 Wireshark 跟踪,以查看浏览器和 .NET 应用程序与服务器协商的密码套件。它看起来像 .NET 应用程序和激活 TLSv1.2 的 IE 协商 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,而 firefox 和 chrome 协商 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384。
有谁知道为什么 2-way ssl 握手适用于套件 firefox 和 chrome 使用,但不适用于套件 IE 和 .Net 应用程序使用。
这可能是远程服务器配置的问题,还是更有可能是 Windows/.Net 框架问题?
为什么 IE 和 .Net Framework 不尊重服务器优先顺序?
非常感谢您。
-威利
【问题讨论】:
-
要支持 TLS1.2,您的应用程序必须构建在 .net framework 4.5 之上。
标签: c# asp.net ssl encryption