本文介绍了 GAAP 对 TLS 握手时允许使用的协议版本和密码套件的支持情况。
什么是 TLS 协议版本?
TLS(Transport Layer Security)协议是一种用于加密网络通信的安全协议,它是 SSL(Secure Sockets Layer)协议的继任者,允许客户端/服务器应用程序之间进行加密通信。 TLS 协议有多个版本,包括 TLS 1.0、TLS 1.1、TLS 1.2 和 TLS 1.3,TLS 1.3是最新的版本,提供了更安全、更高效的加密机制。
什么是密码套件?
密码套件是一组加密算法,用于安全传输层协议(TLS)中的安全连接。TLS 密码套件由认证,加密和消息认证码(MAC)三个部分组成,它们提供安全性和可靠性,保护传输中的数据免受第三方窃取。在 TLS 握手过程中,客户端和服务器会协商一个可以使用的密码套件(客户端和服务器会根据它们支持的密码套件列表来确定使用哪个密码套件),以便客户端和服务器之间的通信可以使用该密码套件进行加密。
使用场景
GAAP 默认启用所有 TLS 版本,密码套件为 GAAP_TLS_CIPHERS_WIDE,可以满足大部分客户需求,若您对安全性有更高要求,可自定义调整使用的密码套件包:
业务场景 | 密码套件 |
注重兼容旧版浏览器,对安全性要求可适当放宽。 | GAAP_TLS_CIPHERS_WIDE |
需兼顾浏览器的兼容性和安全性,安全性和兼容性均为适中 | GAAP_TLS_CIPHERS_GENERAL |
安全性要求高,可降低浏览器兼容性,需屏蔽所有可能存在安全漏洞的 TLS 版本和密码套件 | GAAP_TLS_CIPHERS_STRICT |
GAAP 支持的 TLS 协议版本及密码套件
GAAP 支持的 TLS 版本如下:
TLS 1.0、TLS 1.1、TLS 1.2、TLS 1.3
GAAP 支持在 TLS 协议版本的基础之上,为用户提供不同的强度的密码套件选择:
GAAP_TLS_CIPHERS_STRICT:安全性要求高,禁用所有不安全的密码套件。
GAAP_TLS_CIPHERS_GENERAL:需兼顾浏览器的兼容性和安全性,安全性和兼容性均为适中。
GAAP_TLS_CIPHERS_WIDE(默认):注重兼容旧版浏览器,对安全性要求可适当放宽。
OpenSSL 密码套件 | GAAP_TLS_CIPHERS_STRICT | GAAP_TLS_CIPHERS_GENERAL | GAAP_TLS_CIPHERS_WIDE |
HIGH(nginx预定义高强度密码套件) | ✓ | ✓ | ✓ |
MEDIUM(nginx预定义中等强度密码套件) | - | ✓ | ✓ |
DEFAULT(nginx预定义默认强度密码套件) | - | - | ✓ |
ECDHE-ECDSA-AES256-GCM-SHA384 | ✓ | ✓ | ✓ |
ECDHE-ECDSA-AES128-GCM-SHA256 | ✓ | ✓ | ✓ |
ECDHE-RSA-AES256-GCM-SHA384 | ✓ | ✓ | ✓ |
ECDHE-RSA-AES128-GCM-SHA256 | ✓ | ✓ | ✓ |
ECDHE-ECDSA-CHACHA20-POLY1305 | ✓ | ✓ | ✓ |
ECDHE-RSA-CHACHA20-POLY1305 | ✓ | ✓ | ✓ |
ECDHE-RSA-AES256-SHA | - | - | ✓ |
ECDHE-RSA-AES128-SHA | - | - | ✓ |
AES256-GCM-SHA384 | - | - | ✓ |
AES128-GCM-SHA256 | - | - | ✓ |
AES256-SHA | - | - | ✓ |
AES128-SHA | - | - | ✓ |
您可根据自身业务的安全和兼容性需求配置 TLS 版本及密码套件,最终支持的 OpenSSL 密码套件取 TLS 版本和密码套件选项对应内容的交集,例如:
TLS 版本开启 TLS 1.2,且密码套件选项选择GAAP_TLS_CIPHERS_WIDE,则最终支持的 OpenSSL 密码套件为 TLS 1.2 与GAAP_TLS_CIPHERS_WIDE 支持的交集:ECDHE-ECDSA-AES256-GCM-SHA384 等密码套件包。