设置TLS版本

客户端应用程序与OSS之间的通信使用传输层安全TLS(Transport Layer Security)进行加密。 TLS是一种标准的加密协议,可确保通过互联网进行通信的客户端与服务端之间的隐私和数据完整性。您可以通过OSS服务端设置TLS版本。设置TLS版本后,客户端仅支持使用对应版本TLS与OSS之间发送和接收请求,以满足通信链路的安全性要求。

前提条件

RAM用户必须拥有以下权限:oss:PutTLSVersionoss:GetTLSVersion。具体操作,请参见为RAM用户授权自定义的权限策略

TLS版本说明

目前TLS支持四个版本,分别为1.0、1.1、1.2和1.3。各版本使用场景以及支持主流浏览器说明如下:

协议

说明

适用场景

支持的主流浏览器

TLS 1.0

使用的主要加密算法包括RSA、DES、3DES等。TLS 1.0存在一些安全漏洞,容易受到各种攻击(例如BEAST和POODLE等)。对当今网络连接的安全已失去应有的保护效力,不符合PCI DSS合规判定标准。

由于存在一些安全漏洞,TLS 1.0不再被广泛推荐使用。在绝大多数情况下,建议升级到更安全的TLS版本。

  • IE6+

  • Chrome 1+

  • Firefox 2+

TLS 1.1

主要改进了对安全性的支持,去除了部分已知的漏洞,增加了对更强大加密算法的支持,例如AES、RSA、SHA-256等。

需要相对较高安全级别的场景,但不需求最新的TLS特性的环境。

  • IE11+

  • Chrome 22+

  • Firefox 24+

  • Safri 7+

TLS 1.2

进一步加强了对安全性的支持,并增加了一些新特性例如服务器名称指示(SNI)、扩展握手协议等。支持的加密算法包括AES-GCM、AES-CBC、ECDHE等。

大多数常见的安全通信场景,包括Web应用程序、电子商务网站、电子邮件、虚拟专用网络(VPN)等。

  • IE11+

  • Chrome 30+

  • Firefox 27+

  • Safri 7+

TLS 1.3

在安全性、性能和隐私方面进行了重大改进。删除了一些不安全的加密算法,增加了更强大的密钥交换算法和加密算法,减少了握手过程的延迟,还提供了更好的前向保密和身份验证机制。

对安全性要求较高、希望获得更好性能和隐私保护的场景,如金融机构、大型互联网公司、政府机构等。

  • Chrome 70+

  • Firefox 63+

注意事项

  • 不建议将Bucket设置为仅允许TLS 1.0或者TLS 1.1这两个低版本协议,建议至少包含TLS 1.2主流版本。

  • OSS将TLS 1.2置为默认版本,原因是该版本为当前主流版本。如果未选择TLS 1.2版本,会造成一些主流客户端无法正常访问OSS。

  • 降低TLS版本(例如从TLS 1.2降至TLS 1.1或者TLS 1.0)或者关闭TLS版本设置可能会带来安全性和合规性问题,建议您谨慎操作。

  • 禁用某个TLS版本前,需要确认当前无客户端仅支持使用将被禁用的版本。

操作步骤

使用OSS控制台

  1. 登录OSS管理控制台

  2. 在左侧导航栏,单击Bucket 列表,然后单击目标Bucket名称。

  3. 在左侧导航栏,选择数据安全 > TLS版本设置

  4. TLS版本设置页面,开启TLS版本设置,并指定允许的TLS版本

    关于TLS版本的适用场景及说明,请参见TLS版本说明

  5. 单击保存,然后在弹出的对话框,单击确定

    为Bucket配置指定的TLS版本后,该配置将在30分钟内生效。

  6. (可选)如果您需要修改TLS版本设置,您可以单击允许的TLS版本右侧的修改,然后按照页面

    指引完成修改操作。

  7. (可选)如果您不再需要使用TLS版本设置,您可以选择关闭TLS版本设置开关,然后按照页面

    指引完成关闭操作。

使用REST API

如果您的程序自定义要求较高,您可以直接发起REST API请求。直接发起REST API请求需要手动编写代码计算签名。详情请参见PutBucketHttpsConfigGetBucketHttpsConfig

常见问题

如何判断当前使用的TLS版本?

在客户端未指定TLS版本的情况下,您可以通过以下命令判断当前客户端与服务端之间协商使用的TLS版本。

openssl s_client -connect <Bucket>.<Endpoint>:443 -servername <Bucket>.<Endpoint>

代码示例中涉及的参数说明如下:

参数

说明

Bucket

填写OSS存储空间名称。

Endpoint

支持外网Endpoint、内网Endpoint以及自定义域名。

您可以从返回结果中获取TLS版本。

1.jpg

如何判断TLS版本是否设置成功?

当您的Bucket配置为仅允许TLS 1.2版本访问时,如果TLS版本设置成功,会出现以下三种情况:

  • 客户端指定TLS 1.2版本时可以成功访问服务端

    openssl s_client -connect <Bucket>.<Endpoint>:443 -servername <Bucket>.<Endpoint> -tls1_2

    代码示例中涉及的参数说明如下:

    参数

    说明

    Bucket

    填写OSS存储空间名称。

    Endpoint

    支持外网Endpoint、内网Endpoint以及自定义域名。

    返回结果如下:

    3.jpg

  • 客户端未指定TLS版本(但客户端本身支持TLS 1.2版本)时可以成功访问服务端

    openssl s_client -connect <Bucket>.<Endpoint>:443 -servername <Bucket>.<Endpoint>

    返回结果如下:

    3.jpg

  • 客户端指定非TLS 1.2版本(例如TLS 1.1)时无法正常访问服务端

    openssl s_client -connect <Bucket>.<Endpoint>:443 -servername <Bucket>.<Endpoint> -tls1_1

    返回结果如下:

    2.jpg