你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Database for MySQL 中的传输层安全性 (TLS)

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 = ONtls_version = TLS 1.0TLS 1.1 不再可用!
强制实施 TLS,TLS 版本 = 1.2(默认配置) require_secure_transport = ONtls_version = TLS 1.2 默认配置。
强制使用 TLS,并设置 TLS 版本为 1.3 require_secure_transport = ONtls_version = TLS 1.3 建议的配置;仅支持 Azure Database for MySQL 灵活服务器版本 v8.0 及更高版本。

注释

不支持更改 TLS 密码。 默认情况下,当 tls_version 设置为 TLS 1.2TLS 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 签发的双签名证书:

中国地区目前使用以下证书颁发机构:

关于中级证书颁发机构

Azure Database for MySQL 使用中间 CA(ICA)颁发服务器证书。 Microsoft定期轮换这些 ICA 及其颁发的服务器证书,以维护安全性。 这些轮换是例行公事,不会提前宣布。

2025 年 11 月,DigiCert Global Root G2 的中间证书颁发机构的轮换开始(见 证书轮换),计划于 2026 年第 1 季度完成,届时将更换中间证书颁发机构,如下所示。 如果你遵循建议的做法,那么此更改不需要对你的环境进行任何调整。

旧 CA 链

此信息仅供参考。 不要在受信任的根存储中使用中间 CA 或服务器证书。

  • DigiCert Global Root G2
    • Microsoft Azure RSA TLS Issuing CA 03 / 04 / 07 / 08
      • 服务器证书

新的 CA 链

此信息仅供参考。 不要在受信任的根存储中使用中间 CA 或服务器证书。

  • DigiCert Global Root G2
    • Microsoft TLS RSA Root G2
      • Microsoft 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 的更改是例行公事,因此不会宣布。

注意

使用 不受支持的(客户端)配置 可能会导致意外的连接失败。

最佳配置

配置良好

  • 设置require_secure_transport = ONtls_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 证书)。