为了符合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.浏览器
桌面和移动版本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 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 | 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。我们建议在将其部署到生产服务器前,测试此更改。这也可用作注册表导入文件。 |
.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 或更高版本的加密。 |
出错了......