客户端应用程序与OSS之间的通信使用传输层安全TLS(Transport Layer Security)进行加密。 TLS是一种标准的加密协议,可确保通过互联网进行通信的客户端与服务端之间的隐私和数据完整性。您可以通过OSS服务端设置TLS版本。设置TLS版本后,客户端仅支持使用对应版本TLS与OSS之间发送和接收请求,以满足通信链路的安全性要求。
前提条件
RAM用户必须拥有以下权限:oss:PutTLSVersion
、oss: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版本。 |
|
TLS 1.1 | 主要改进了对安全性的支持,去除了部分已知的漏洞,增加了对更强大加密算法的支持,例如AES、RSA、SHA-256等。 | 需要相对较高安全级别的场景,但不需求最新的TLS特性的环境。 |
|
TLS 1.2 | 进一步加强了对安全性的支持,并增加了一些新特性例如服务器名称指示(SNI)、扩展握手协议等。支持的加密算法包括AES-GCM、AES-CBC、ECDHE等。 | 大多数常见的安全通信场景,包括Web应用程序、电子商务网站、电子邮件、虚拟专用网络(VPN)等。 |
|
TLS 1.3 | 在安全性、性能和隐私方面进行了重大改进。删除了一些不安全的加密算法,增加了更强大的密钥交换算法和加密算法,减少了握手过程的延迟,还提供了更好的前向保密和身份验证机制。 | 对安全性要求较高、希望获得更好性能和隐私保护的场景,如金融机构、大型互联网公司、政府机构等。 |
|
注意事项
不建议将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控制台
使用REST API
常见问题
如何判断当前使用的TLS版本?
在客户端未指定TLS版本的情况下,您可以通过以下命令判断当前客户端与服务端之间协商使用的TLS版本。
openssl s_client -connect <Bucket>.<Endpoint>:443 -servername <Bucket>.<Endpoint>
代码示例中涉及的参数说明如下:
参数 | 说明 |
Bucket | 填写OSS存储空间名称。 |
Endpoint | 支持外网Endpoint、内网Endpoint以及自定义域名。 |
您可以从返回结果中获取TLS版本。
如何判断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以及自定义域名。
返回结果如下:
客户端未指定TLS版本(但客户端本身支持TLS 1.2版本)时可以成功访问服务端
openssl s_client -connect <Bucket>.<Endpoint>:443 -servername <Bucket>.<Endpoint>
返回结果如下:
客户端指定非TLS 1.2版本(例如TLS 1.1)时无法正常访问服务端
openssl s_client -connect <Bucket>.<Endpoint>:443 -servername <Bucket>.<Endpoint> -tls1_1
返回结果如下: