【问题标题】:Client certificate is not sent by .Net App using TLS1.2.Net App 不使用 TLS1.2 发送客户端证书
【发布时间】: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


【解决方案1】:

根据您的描述,我猜想在 TLS 1.2 握手期间存在问题。一个可能的原因可能是证书链中至少有一个证书使用 Md5 作为其哈希算法。

如果是这种情况,您需要使用公认的哈希算法与另一个证书交换该证书。

查看以下链接以获得进一步的解释:

【讨论】:

    猜你喜欢
    • 2022-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 2017-12-04
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多