Azure Database for MySQL 要求所有客户端连接都使用传输层安全性(TLS),这是一种行业标准协议,用于加密数据库服务器和客户端应用程序之间的通信。 TLS 取代了较旧的 SSL 协议,只有 TLS 版本 1.2 和 1.3 才被识别为安全。 TLS 安全性的完整性依赖于三大支柱:
- 仅使用 TLS 版本 1.2 或 1.3。
- 客户端在受信任的根 CA 启动的 CA 链中验证由证书颁发机构 (CA) 颁发的服务器的 TLS 证书。
- 在服务器和客户端之间协商安全密码套件。
Azure Database for MySQL 灵活服务器中的 TLS 配置
Azure Database for MySQL灵活服务器支持使用安全套接字层(SSL)和传输层安全性(TLS)加密将客户端应用程序连接到Azure Database for MySQL灵活服务器实例。 TLS 是一种行业标准协议,可确保在数据库服务器与客户端应用程序之间实现加密网络连接,以便遵循合规性要求。
Azure Database for MySQL灵活服务器默认使用传输层安全性(TLS 1.2)支持加密连接,默认情况下,它使用 TLS 1.0 和 TLS 1.1 拒绝所有传入连接。 可以在灵活服务器上配置和更改加密连接强制或 TLS 版本配置。
下表介绍了可为你的灵活服务器设置的 SSL 和 TLS 的不同配置:
Important
根据 删除对 TLS 1.0 和 TLS 1.1 协议的支持,MySQL 计划在 2024 年 9 月之前完全弃用 TLS 1.0 和 1.1。 但是,由于一些客户发现了依赖关系,时间表被延长了。
- 从 2025 年 8 月 31 日开始,强制升级对于仍在使用 TLS 1.0 或 1.1 的所有服务器开始。 在此日期之后,任何依赖于 TLS 1.0 或 1.1 的连接随时都可能会停止工作。
为了避免服务中断,请尽快迁移到 TLS 1.2。
| Scenario | 服务器参数设置 | 说明 |
|---|---|---|
| 禁用 TLS 强制执行 | require_secure_transport = OFF |
如果旧版应用程序不支持加密连接,请禁用强制使用加密连接。 |
| 使用 TLS 版本 < 1.2 强制实施 TLS(将于 2024 年 9 月弃用) |
require_secure_transport = ON 和 tls_version = TLS 1.0 或 TLS 1.1 |
不再可用! |
| 强制实施 TLS,TLS 版本 = 1.2(默认配置) |
require_secure_transport = ON 和 tls_version = TLS 1.2 |
默认配置。 |
| 强制使用 TLS,并设置 TLS 版本为 1.3 |
require_secure_transport = ON 和 tls_version = TLS 1.3 |
建议的配置;仅支持 Azure Database for MySQL 灵活服务器版本 v8.0 及更高版本。 |
注释
不支持更改 TLS 密码。 默认情况下,当 tls_version 设置为 TLS 1.2 或 TLS 1.3 时,将强制实施符合 FIPS 的密码套件。
查看使用 SSL/TLS 的连接,以了解如何识别 TLS 版本。
受信任的根证书和证书轮换
Important
根证书轮换计划:
- 从 2026 年 3 月 9 日起,针对中国区域的根 CA 证书,将从 DigiCert 全球根 CA (G1) 更新为 DigiCert 全球根 G2。
- 如果客户端 配置使用 TLS 的建议配置,则无需执行任何作。
Azure Database for MySQL 所使用的根 CA
根证书颁发机构 (Root CAs) 是证书链中的顶级颁发机构。 Azure Database for MySQL 当前使用由以下根 CA 支持的 ICA 颁发的双签名证书:
中国地区目前使用以下证书颁发机构:
- Microsoft RSA 根 CA 2017
- DigiCert Global Root CA
- 2026年春节(农历新年)后:DigiCert Global Root G2 通过将新的根证书颁发机构 (CA) 添加到受信任的根证书存储中,为这一变更做好准备。
关于中间证书颁发机构
Azure Database for MySQL 使用中间 CA(ICA)颁发服务器证书。 Microsoft定期轮换这些 ICA 及其颁发的服务器证书,以维护安全性。 这些轮换是例行公事,不会提前公布。
中间证书颁发机构 DigiCert Global Root G2 的当前轮换(见 证书轮换)从 2025 年 11 月开始,计划于 2026 年第 1 季度完成。 本次轮换将按如下方式替换中间 CA。 如果遵循 了建议的做法,则无需在环境中进行任何更改。
旧 CA 链
此信息仅供参考。 不要在受信任的根存储中使用中间 CA 或服务器证书。
DigiCert Global Root G2Microsoft Azure RSA TLS Issuing CA 03 / 04 / 07 / 08- 服务器证书
新建 CA 链
此信息仅供参考。 不要在受信任的根存储中使用中间 CA 或服务器证书。
DigiCert Global Root G2Microsoft TLS RSA Root G2Microsoft TLS G2 RSA CA OCSP 02 / 04 / 06 / 08 / 10 / 12 / 14 / 16- 服务器证书
证书链
证书链是受信任的证书颁发机构(CA)颁发的证书的分层序列,从根 CA 开始,颁发中间 CA (ICA) 证书。 ICA 可能会为下级 ICA 颁发证书。 链中最低的 ICA 颁发单个服务器证书。 通过逐个验证链中的每个证书直到根 CA 证书,您可以建立信任链。
减少连接失败
使用建议的 TLS 配置来降低由于证书轮换或更改中间 CA 而导致连接失败的风险。 具体而言,请避免信任中间 CA 或单个服务器证书,因为这些做法可能会导致Microsoft更新证书链时出现意外的连接问题。
Important
Microsoft 提前宣布根 CA 的更改,以帮助您准备客户端应用。 但是,服务器证书轮换和中间 CA 的更改是例行公事,因此不会公布。
Caution
使用 不受支持的(客户端)配置 可能会导致意外的连接失败。
TLS 的建议配置
最佳配置
- 通过设置
require_secure_transport = ON和tls_version = TLS 1.3,强制使用最新、最安全的 TLS 版本。 - 使用来自客户端应用程序的完整验证(设置因客户端而异)。
- 始终在 受信任的根存储中维护完整的 Azure 根证书集。
配置良好
- 设置
require_secure_transport = ON和tls_version = TLS 1.3。 如果必须支持 TLS 1.2,请不要设置tls_version。 - 使用来自客户端应用程序的完整验证(这因客户端而异)。
- 确保受信任的根存储包含 Azure Database for MySQL 当前使用的根 CA 证书:
支持,但不建议
不要通过将 require_secure_transport 设置为 OFF 来完全禁用 TLS。
不支持的配置;不使用
Azure MySQL 不会公布有关中间 CA 更改或单个服务器证书轮换的更改。 因此,不支持以下配置:
- 你在受信任的存储中使用中间 CA 证书。
- 您使用证书固定机制,例如在信任存储中使用单独的服务器证书。
Caution
每当Microsoft更改证书链的中间 CA 或轮换服务器证书时,应用程序都无法连接到数据库服务器,而不会发出警告。
TLS 的其他注意事项
不安全和安全 TLS 版本
全球多个政府实体均制定了有关网络安全的 TLS 准则。 TLS 提供的安全级别受 TLS 协议版本和受支持的密码套件的影响最大。
Azure Database for MySQL 支持 TLS 版本 1.2 和 1.3。 在 RFC 8996 中,Internet 工程工作队(IETF)明确指出不得使用 TLS 1.0 和 TLS 1.1。 这两种协议在 2019 年底被弃用。 默认情况下,使用早期不安全版本的 TLS 协议(如 TLS 1.0 和 TLS 1.1)的所有传入连接均被拒绝。
IETF 于 2018 年 8 月在 RFC 8446 中发布了 TLS 1.3 规范,TLS 1.3 是推荐的版本,因为它比 TLS 1.2 更快、更安全。
尽管不建议这样做,但如果需要,可以禁用 TLS 以连接到Azure Database for MySQL。 可以将 require_secure_transport 服务器参数更新为 OFF。
密码套件
密码套件是一组算法,其中包括密码、密钥交换算法和哈希算法。 将它们与 TLS 证书和 TLS 版本一起使用,以建立安全的 TLS 连接。 大多数 TLS 客户端和服务器都支持多个密码套件,有时支持多个 TLS 版本。 在建立连接期间,客户端和服务器 会协商 TLS 版本和密码套件,以便通过握手使用。 在此握手期间,将发生以下情况:
- 客户端发送可接受的密码套件列表。
- 服务器从列表中选择一个(根据自己的定义)最佳加密套件,并通知客户端这个选择。
Azure Database for MySQL中无法使用的 TLS 特性
目前,Azure Database for MySQL 不实现以下 TLS 功能:
- 使用相互身份验证(mTLS)通过 TLS 进行基于 TLS 的客户端身份验证。
- 自定义服务器证书(自带 TLS 证书)。