由于 WCF 服务中的 HTTPS 更改,应用程序流中的 TLS 问题

TLS issues in application flow due to HTTPS changes in WCF services

客户场景是:服务器中禁用了 TLS 1.0 和 TLS1.1,注册表中仅启用了 TLS1.2。 由于 WCF 服务的 HTTPS 更改依赖于 TLS,因此它们在应用程序流中面临 TLS 问题。 为了解决这个问题,他们在客户端调用的多个地方添加了以下代码行。但这根本不是推荐的方式。

System.Net.ServicePointManager.SecurityProtocol =
SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

我们尝试在 Global.asax 文件中添加该行,而不是为一个项目在多个地方添加,但这没有用。

此问题已通过添加值为“1”的注册表设置“SchUseStrongCrypto”解决,该设置要求所有 .NET 应用程序默认使用 TLS 1.2 而不是 1.0。

现在的问题是:添加此注册表项值是否有任何影响或限制?解决此类问题的最佳做法是什么?理想情况下,应将哪个 .Net Framework 作为目标,以便默认将此键设置为 1?

最好不要指定TLS版本。配置您的代码,让操作系统确定 TLS 版本。如果想在本地测试,可以添加如下代码自定义验证证书。

 ServicePointManager.ServerCertificateValidationCallback+= delegate
            {
                return true;
            };

供您参考:Transport Layer Security (TLS) best practices with the .NET Framework