你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Database for MySQL 要求所有客户端连接都使用传输层安全性(TLS),这是一种行业标准协议,用于加密数据库服务器和客户端应用程序之间的通信。 TLS 取代了较旧的 SSL 协议,只有 TLS 版本 1.2 和 1.3 才被识别为安全。 TLS 安全性的完整性依赖于三大支柱:
- 仅使用 TLS 版本 1.2 或 1.3。
- 客户端会验证服务器的 TLS 证书,该证书由证书颁发机构(CA)签发,并且位于以受信任根 CA 为起点的 CA 链中。
- 在服务器和客户端之间协商安全密码套件。
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 设置的不同配置:
重要
根据 删除对 TLS 1.0 和 TLS 1.1 协议的支持,我们以前计划到 2024 年 9 月完全弃用 TLS 1.0 和 1.1。 但是,由于某些客户标识的依赖项,我们决定延长时间表。
- 从 2025 年 8 月 31 日开始,我们开始对所有仍在使用 TLS 1.0 或 1.1 的服务器强制升级。 在此日期之后,任何依赖于 TLS 1.0 或 1.1 的连接随时都可能会停止工作。
为了避免服务中断,我们建议客户尽快完成迁移到 TLS 1.2,以避免服务中断。
| Scenario | 服务器参数设置 | Description |
|---|---|---|
| 禁用 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 版本。
受信任的根证书和证书轮换
重要
Azure Database for MySQL 已开始 TLS 证书轮换 ,以更新中间 CA 证书和生成的证书链。 根证书颁发机构保持不变。
如果客户端 配置使用 TLS 的建议配置,则无需执行任何作。
证书轮换计划
- Azure 区域美国中西部、东亚和英国南部于 2025 年 11 月 11 日开始其 TLS 证书轮换。
- 从 2026 年 1 月 19 日起,此证书轮换扩展到其余(中国除外)区域,包括 Azure 政府。
- 2026 年春节后,中国区域也将进行证书轮换,其中包括更改其中一个根证书。
Azure Database for MySQL 使用的根 CA
根证书颁发机构 (Root CAs) 是证书链中的顶级颁发机构。 Azure Database for MySQL 目前使用由以下根证书锚定的 ICA 签发的双签名证书:
中国地区目前使用以下证书颁发机构:
- Microsoft RSA Root CA 2017
- DigiCert 全局根 CA
- 春节后(农历新年)2026年:Digicert Global Root G2。 建议提前为此更改做好准备,将新的根 CA 添加到受信任的根证书存储中。
关于中级证书颁发机构
Azure Database for MySQL 使用中间 CA(ICA)颁发服务器证书。 Microsoft定期轮换这些 ICA 及其颁发的服务器证书,以维护安全性。 这些轮换是例行公事,不会提前宣布。
2025 年 11 月,DigiCert Global Root G2 的中间证书颁发机构的轮换开始(见 证书轮换),计划于 2026 年第 1 季度完成,届时将更换中间证书颁发机构,如下所示。 如果你遵循建议的做法,那么此更改不需要对你的环境进行任何调整。
旧 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更新证书链时出现意外的连接问题。
重要
根 CA 的更改提前宣布,以帮助你准备客户端应用程序;但是,服务器证书轮换和中间 CA 的更改是例行公事,因此不会宣布。
注意
使用 不受支持的(客户端)配置 可能会导致意外的连接失败。
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 证书。
- 使用了证书固定,例如在受信任的证书存储中使用单个服务器证书。
注意
每当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 功能:
- 基于 TLS 证书的客户端身份验证(通过 TLS 双向身份验证 mTLS)。
- 自定义服务器证书(自带 TLS 证书)。