关于停用TLS1.0和启用HTTP/2.0的通知

目录:站点公告 发布于:2018-09-26 14:03:57

为了符合PCI DSS标准并符合行业最佳实践,本站计划于2018年12月28日停止支持TLS1.0,并开启HTTP/2.0支持。

1.什么是TLS?

TLS 的全称是“安全传输层协议”。这是在两个通信应用程序之间提供隐私和数据完整性的协议。同时也是当今部署最广泛的安全协议,并且可用于 Web 浏览器和其他需要通过网络安全交换数据的应用程序。TLS 会确保连接到远程端点是通过加密和端点身份验证的目标端点。至今 TLS 的版本分别是 TLS 1.0、1.1 、1.2和1.3。

本站网页和 API 连接会将 TLS 用作安全的关键组件。

2.有何更改?

我站从 2018 年 12 月 28 日开始升级到 TLS 1.1 或更高版本。我们将在该日期开始禁用 TLS 1.0 加密协议,这将阻止仍使用该协议的客户访问本站部分服务。

3.客户将受到何种影响?

在本站禁用 TLS 1.0 后,任何仍使用 TLS 1.0 入站连接到本站都将失败。这将影响部分服务,包括访问网站(https形式),api调用。

4.为什么会出现这种情况?

TLS 1.0于1999年发行,至今将近有20年。业内都知道该版本易受各种攻击(如BEAST和POODLE)已有多年,除此之外,支持较弱加密,对当今网络连接的安全已失去应有的保护效力。

信任是我们最重视的一个方面,因此我司会重点关注通过采用最新的安全协议帮助客户提高安全性。从 2018 年 12 月 28 日开始,本站将需要 TLS 1.1 和更高版本的加密协议,以尽力维护最高安全标准并提升客户数据的安全性。

兼容性指南

1.浏览器

IE兼容性说明
桌面和移动版本IE11 兼容TLS1.1或更高版本
桌面版本IE8、9、10

仅在win7或更高版本时兼容,但默认不兼容,需要自行配置

windows vista、XP和更早版本的windows不兼容,并且无法配置以兼容TLS1.1或TLS1.2

桌面IE7和更早版本 不兼容
移动版本IE10和更早版本 不兼容
Edge 兼容TLS1.1或更高版本

 

其它浏览器兼容性说明
Firefox 至少需要Firefox 27
Chrome 至少需要Chrome 38
Android浏览器 至少需要5.0版本
Safari(iOS) 至少需要iOS 5.0
Safari (Mac) 至少需要OS X 10.9

 

2.API

平台或库

兼容性说明

Java (Oracle)

兼容最新版本,而不论操作系统

Java 8 (1.8) 和更高版本

兼容 TLS 1.1 或更高版本(默认设置)。

Java 7 (1.7)

使用 https.protocols Java 系统属性为 HttpsURLConnection 启用 TLS 1.1 和 TLS 1.2。要在非 HttpsURLConnection 连接上启用 TLS 1.1 和 TLS 1.2,请在应用程序源代码中的已创建 SSLSocket 和 SSLEngine 实例上启用协议。如果升级到更新的 Oracle Java 版本不可行,则切换为 IBM Java 可能是一个有效的解决方法。

Java 6 (1.6) 升级 111 和更高版本

 

使用 https.protocols Java 系统属性为 HttpsURLConnection 启用 TLS 1.1。要在非 HttpsURLConnection 连接上启用 TLS 1.1,请在应用程序源代码中的已创建 SSLSocket 和 SSLEngine 实例上启用协议。此 Java 6 更新和更新的更新公开不可用,并需要 Oracle 中 Java 6 的支持合同。 

Java 6 (1.6) 和以下版本(公开可用的版本)

并不兼容 TLS 1.1 或更高版本的加密。如果升级到更新的 Oracle Java 版本不可行,则切换为 IBM Java 可能是一个有效的解决方法。

Java (IBM)

Java 8

兼容 TLS 1.1 或更高版本(默认设置)。如果您的应用程序或库通过使用 SSLContext.getinstance("TLS") 进行调用,则您可能需要设置 com.ibm.jsse2.overrideDefaultTLS=true

Java 7 和更高版本、Java 6.0.1 服务刷新 1 (J9 VM2.6) 和更高版本、Java 6 服务刷新 10 和更高版本

使用 https.protocols Java 系统属性进行 HttpsURLConnection 和使用 com.ibm.jsse2.overrideDefaultProtocol Java 系统属性进行 SSLSocket 和 SSLEngine 启用 TLS 1.2,如同 IBM 文档的推荐。您也需要设置 com.ibm.jsse2.overrideDefaultTLS=true。

.NET

在支持 TLS 1.1 或 TLS 1.2 操作系统中运行时,兼容最新版本

.NET 4.6 和更高版本

兼容 TLS 1.1 或更高版本(默认设置)。

.NET 4.5 至 4.5.2

默认情况下,.NET 4.5、4.5.1 和 4.5.2 不启用 TLS 1.1 和 TLS 1.2共有两个选项以进行启用,如下所述。

选项 1:
通过设置 System.Net.ServicePointManager.SecurityProtocol 启用 SecurityProtocolType.Tls12 和 SecurityProtocolType.Tls11,.NET 应用程序可在软件代码中直接启用 TLS 1.1 和 TLS 1.2。以下 C# 代码是示例:

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

选项 2:
通过将以下两个注册表项中的 SchUseStrongCrypto DWORD 值设置为 1(如果不存在请创建),可在默认情况下启用 TLS 1.2,而无需修改源代码:"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" 和 "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319"。虽然这些注册表项中的版本号是 4.0.30319,则 .NET 4.5、4.5.1 和 4.5.2 框架也会使用这些值。但默认情况下,这些注册表项将在系统上所有安装 .NET 4.0、4.5、4.5.1 和 4.5.2 应用程序中启用 TLS 1.2。因此在将其部署到生产服务器前,测试此更改是合理措施。这也可用作注册表导入文件。但这些注册表值将不会影响设置 System.Net.ServicePointManager.SecurityProtocol 值的 .NET 应用程序。

.NET 4.0

默认情况下,.NET 4.0 不会启用 TLS 1.2。要默认启用 TLS 1.2,安装 .NET Framework 4.5 或更新版本,并将以下两个注册表项中的 SchUseStrongCrypto DWORD 值设置为 1(如果不存在请创建):"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" 和 "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319"。但默认情况下,这些注册表项可能在系统上所有安装 .NET 4.0、4.5、4.5.1 和 4.5.2 应用程序中启用 TLS 1.2。我们建议在将其部署到生产服务器前,测试此更改。这也可用作注册表导入文件。

但这些注册表值将不会影响设置 System.Net.ServicePointManager.SecurityProtocol 值的 .NET 应用程序。

.NET 3.5 和更低版本

并不兼容 TLS 1.1 或更高版本的加密

Python

在支持 TLS 1.1 或 TLS 1.2 操作系统中运行时,兼容最新版本。

Python 2.7.9 和更高版本

兼容 TLS 1.1 或更高版本(默认设置)。

Python 2.7.8 和更低版本

并不兼容 TLS 1.1 或更高版本的加密

Ruby

在链接到 OpenSSL 1.0.1 或更高版本时,兼容最新版本。

Ruby 2.0.0

在与 OpenSSL 1.0.1 或更高版本连用时,默认会启用 TLS 1.2。使用 :TLSv1_2(首选)或 :TLSv1_1 符号与 SSLContext 的 ssl_version,以帮助确保禁用 TLS 1.0 或早期版本。

Ruby 1.9.3 和更低版本

:TLSv1_2 符号不存在于 1.9.3 和更低版本,但可为 Ruby 添加补丁,以添加该符号并将 Ruby 与 OpenSSL 1.0.1 更高版本兼容。

Microsoft WinINet

兼容最新版本。

Windows Server 2012 R2 和更高版本

Windows 8.1 和更高版本

兼容 TLS 1.1 或更高版本(默认设置)。

Windows Server 2008 R2 至 2012

Windows 7 和 8

如果安装 Internet Explorer 11,则默认兼容。如果安装 Internet Explorer 8、9 或 10,则将需要用户或管理员启用 TLS 1.1 和 TLS 1.2,以进行兼容。请查看在 Internet Explorer 中启用 TLS 1.1 和 TLS 1.2 文章,以启用 TLS 1.1 或更高版本的加密。

Windows Server 2008 和更低版本

Windows Vista 和更低版本

并不兼容 TLS 1.1 或更高版本的加密。

Microsoft Secure Channel (Schannel)

兼容最新版本。

Windows Server 2012 R2 和更高版本

Windows 8.1 和更高版本

兼容 TLS 1.1 或更高版本(默认设置)。

Windows Server 2012

Windows 8

默认会禁用 TLS 1.1 和 TLS 1.2,但如果应用程序启用也可用。默认情况下,在注册表中启用 TLS 1.1 和 TLS 1.2。这些注册表设置也可用作注册表导入文件。 

Windows Server 2008 R2

Windows 7

在安装 Internet Explorer 11 时,在客户端模式中默认兼容。如果未安装 Internet Explorer 11 ,则 TLS 1.1 和 TLS 1.2 会在注册表中默认启用。这些注册表设置也可用作注册表导入文件。 

Windows Server 2008 和更低版本

Windows Vista 和更低版本

并不兼容 TLS 1.1 或更高版本的加密。

Microsoft WinHTTP 和 Webio

Windows Server 2012 R2 和更高版本

Windows 8.1 和更高版本

默认情况下,兼容 TLS 1.1 和 TLS 1.2

Windows Server 2008 R2 SP1 和 2012

Windows 7 SP1

通过应用 KB3140245,默认情况下,兼容 Webio;WinHTTP 可以通过注册表设置进行配置,以启用 TLS 1.1 和 TLS 1.2。

Windows Server 2008 和更低版本

Windows Vista 和更低版本

并不兼容 TLS 1.1 或更高版本的加密

OpenSSL

兼容最新版本,而不论操作系统。

OpenSSL 1.0.1 和更高版本

兼容 TLS 1.1 或更高版本(默认设置)。

OpenSSL 1.0.0 和更低版本

并不兼容 TLS 1.1 或更高版本的加密。

Mozilla NSS

兼容最新版本,而不论操作系统。

3.15.1 和更高版本

兼容 TLS 1.1 或更高版本(默认设置)。

3.14 至 3.15

兼容 TLS 1.1,但不兼容 TLS 1.2。

3.13.6 和更低版本

并不兼容 TLS 1.1 或更高版本的加密。