设置TLS版本确保通信安全

更新时间:2025-04-16 10:12:14

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

前提条件

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

TLS版本说明

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

协议

说明

适用场景

支持的主流浏览器

协议

说明

适用场景

支持的主流浏览器

TLS 1.0

使用的主要加密算法包括RSA、DES、3DES等。TLS 1.0存在一些安全漏洞,容易受到各种攻击(例如BEASTPOODLE等)。对当今网络连接的安全已失去应有的保护效力,不符合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主流版本。

  • 未开启TLS版本设置时,默认支持TLS 1.0、1.1、1.2 三个版本,不支持TLS 1.3版本。开启TLS版本设置后,支持选择设置TLS 1.0、1.1、1.2以及1.3 四个版本。通过OSS控制台首次设置TLS版本时,默认勾选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 加密算法套件

    加密算法套件定义了具体的加密算法组合,用于实现数据加密、身份验证和完整性保护。每个加密算法套件通常包括密钥交换算法(例如RSA、ECDHE等)、认证算法(例如ECDSA)、对称加密算法(例如AES)以及消息认证码算法(例如SHA256)。

    OSS支持以下三种加密算法套件类型:

    • 全部加密算法套件(默认):安全性较低,兼容性较高。

    • 强加密算法套件:安全性较高,兼容性较低。

      强加密算法套件列表

      • ECDHE-ECDSA-CHACHA20-POLY1305

      • ECDHE-RSA-CHACHA20-POLY1305

      • ECDHE-ECDSA-AES128-GCM-SHA256

      • ECDHE-RSA-AES128-GCM-SHA256

      • ECDHE-ECDSA-AES128-CCM8

      • ECDHE-ECDSA-AES128-CCM

      • ECDHE-ECDSA-AES256-GCM-SHA384

      • ECDHE-RSA-AES256-GCM-SHA384

      • ECDHE-ECDSA-AES256-CCM8

      • ECDHE-ECDSA-AES256-CCM

      • ECDHE-ECDSA-ARIA256-GCM-SHA384

      • ECDHE-ARIA256-GCM-SHA384

      • ECDHE-ECDSA-ARIA128-GCM-SHA256

      • ECDHE-ARIA128-GCM-SHA256

      • TLS_AES_256_GCM_SHA384

      • TLS_AES_128_GCM_SHA256

      • TLS_CHACHA20_POLY1305_SHA256

    • 自定义加密算法套件:高度定制化,可以根据具体的安全策略选择最合适的算法组合。如选择更强的加密算法(例如AES-256而不是AES-128)、更安全的密钥交换机制(例如ECDHE而不是RSA)等。仅当TLS版本为1.2或者1.3时,支持设置自定义加密算法套件。

      适用于TLS 1.2版本的自定义加密算法套件

      • ECDHE-ECDSA-CHACHA20-POLY1305

      • ECDHE-RSA-CHACHA20-POLY1305

      • ECDHE-ECDSA-AES128-GCM-SHA256

      • ECDHE-RSA-AES128-GCM-SHA256

      • ECDHE-ECDSA-AES128-CCM8

      • ECDHE-ECDSA-AES128-CCM

      • ECDHE-ECDSA-AES128-SHA256

      • ECDHE-RSA-AES128-SHA256

      • ECDHE-ECDSA-AES256-GCM-SHA384

      • ECDHE-RSA-AES256-GCM-SHA384

      • ECDHE-ECDSA-AES256-CCM8

      • ECDHE-ECDSA-AES256-CCM

      • ECDHE-ECDSA-AES256-SHA384

      • ECDHE-RSA-AES256-SHA384

      • ECDHE-ECDSA-ARIA256-GCM-SHA384

      • ECDHE-ARIA256-GCM-SHA384

      • ECDHE-ECDSA-ARIA128-GCM-SHA256

      • ECDHE-ARIA128-GCM-SHA256

      • ECDHE-ECDSA-CAMELLIA256-SHA384

      • ECDHE-RSA-CAMELLIA256-SHA384

      • ECDHE-ECDSA-CAMELLIA128-SHA256

      • ECDHE-RSA-CAMELLIA128-SHA256

      • AES256-GCM-SHA384

      • AES256-CCM8

      • AES256-CCM

      • ARIA256-GCM-SHA384

      • AES128-GCM-SHA256

      • AES128-CCM8

      • AES128-CCM

      • ARIA128-GCM-SHA256

      适用于TLS 1.3版本的自定义加密算法套件

      • TLS_AES_256_GCM_SHA384

      • TLS_AES_128_GCM_SHA256

      • TLS_CHACHA20_POLY1305_SHA256

    说明

    英国(伦敦)地域支持配置TLS加密算法套件。

    允许的 TLS 版本

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

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

    以上配置将在30分钟内生效。

使用命令行工具ossutil

您可以使用命令行工具ossutil来开启或关闭TLS版本设置,ossutil的安装请参见安装ossutil

  • 以下示例展示了如何为存储空间examplebucket开启TLS版本设置,TLS版本设置为TLSv1.2、TLSv1.3。

    ossutil api put-bucket-https-config --bucket examplebucket --https-configuration "{\"TLS\":{\"Enable\":\"true\",\"TLSVersion\":[\"TLSv1.2\",\"TLSv1.3\"]}}"

    关于该命令的更多信息,请参见put-bucket-https-config

  • 以下示例展示了如何获取存储空间examplebucketTLS版本设置。

    ossutil api get-bucket-https-config --bucket examplebucket

    关于该命令的更多信息,请参见get-bucket-https-config

相关API

以上操作方式底层基于API实现,如果您的程序自定义要求较高,您可以直接发起REST API请求。直接发起REST API请求需要手动编写代码计算签名。更多信息,请参见PutBucketHttpsConfigGetBucketHttpsConfig

常见问题

如何判断当前使用的TLS版本?
如何判断TLS版本是否设置成功?

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

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

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

参数

说明

Bucket

填写OSS Bucket名称。

Endpoint

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

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

1.jpg

当您的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

  • 本页导读 (1)
  • 前提条件
  • TLS版本说明
  • 注意事项
  • 操作方式
  • 使用OSS控制台
  • 使用命令行工具ossutil
  • 相关API
  • 常见问题