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

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

Azure Database for PostgreSQL 要求所有客户端连接都使用传输层安全性(TLS),这是一种行业标准协议,用于加密数据库服务器和客户端应用程序之间的通信。 TLS 取代了较旧的 SSL 协议,只有 TLS 版本 1.2 和 1.3 才被识别为安全。 TLS 安全性的完整性依赖于三大支柱:

  • 仅使用 TLS 版本 1.2 或 1.3。
  • 客户端在受信任的根 CA 启动的 CA 链中验证由证书颁发机构 (CA) 颁发的服务器的 TLS 证书。
  • 在服务器和客户端之间协商安全密码套件。

受信任的根证书和证书轮换

重要

Microsoft为 Azure Database for PostgreSQL 启动 TLS 证书轮换 ,以更新中间 CA 证书和生成的证书链。 根 CA 保持不变。

如果客户端 配置使用 TLS 的建议配置,则无需执行任何作。

证书轮换计划

  • Azure 区域美国中西部、东亚和英国南部于 2025 年 11 月 11 日开始其 TLS 证书轮换。
  • 从 2026 年 1 月 19 日开始,此证书轮换计划扩展到包括 Azure 政府在内的其余(中国除外)区域。
  • 2026年春节(春节)后,中国地区还将进行证书轮换,其中包括 对其中一种根 CA 的更改

Azure Database for PostgreSQL 使用的根 CA

根证书颁发机构 (Root CAs) 是证书链中的顶级颁发机构。 Azure Database for PostgreSQL 当前使用由以下作为锚定点的根 CA 的中级 CA(ICA)颁发的双重签名证书:

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

中间证书颁发机构

Azure Database for PostgreSQL 使用中间 CA(ICA)颁发服务器证书。 为了保持安全性,Microsoft定期轮换这些 FPGA 及其颁发的服务器证书。 这些轮换是例行公事,不会提前公布。

中间 CA DigiCert Global Root CA 的当前轮换(见 证书轮换)于 2023 年 11 月启动,计划于 2024 年第一季度完成。 如果你遵循建议的做法,那么此更改不需要对你的环境进行任何调整。

旧 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
        • 服务器证书

只读副本

DigiCert 全局根 CA 迁移到 DigiCert 全局根 G2 尚未在所有区域完成。 因此,新创建的只读副本可能会使用比主服务器更新的根 CA 证书。 应将 DigiCert Global Root CA 添加到只读副本的受信任存储中。

证书链

证书链是由受信任的证书颁发机构(CA)颁发的证书的分层序列。 链从发出中间 CA(ICA)证书的根 CA 开始。 ICA 可以颁发下级 ICA 的证书。 链中最低的 ICA 颁发单个服务器证书。 通过逐个验证链中的每个证书直到根 CA 证书,您可以建立信任链。

减少连接失败

使用建议的 TLS 配置有助于降低由于证书轮换或更改中间 CA 而导致连接失败的风险。 具体而言,请避免信任中间 CA 或单个服务器证书。 当Microsoft更新证书链时,这些做法可能会导致意外的连接问题。

重要

Microsoft 提前宣布根 CA 的更改,以帮助您准备客户端应用。 但是,服务器证书轮换和中间 CA 的更改是例行公事,不会公布。

注意

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

最佳配置

  • 通过将服务器参数设置为 ,强制实施最新且最安全的 TLS 版本。
  • 在 PostgreSQL 连接中使用 sslmode=verify-all,以确保证书和主机名得到完整验证。 根据您的 DNS 配置,可能无法使用专用终结点或虚拟网络集成 verify-all。 因此,可以改用 verify-ca
  • 始终在 受信任的根存储中维护完整的 Azure 根证书集

配置良好

  • ssl_min_protocol_version 服务器参数设置为 TLSv1.3. 如果必须支持 TLS 1.2,请不要设置最低版本。
  • 使用 sslmode=verify-allsslmode=verify-ca 用于 PostgreSQL 连接,以确保完整或部分证书验证。
  • 确保受信任的根存储包含 Azure Database for PostgreSQL 当前使用的根 CA 证书:

请勿使用以下配置:

  • 通过设置require_secure_transportOFF并将客户端设置为sslmode=disable来禁用 TLS。
  • 使用客户端sslmodedisableallowpreferrequire设置可能会使应用程序容易受到中间人攻击。

不支持的配置;不使用

Azure PostgreSQL 不会公布有关中间 CA 更改或单个服务器证书轮换的更改。 因此,在使用 sslmode 设置时,不支持以下配置:verify-caverify-all

  • 在受信任的存储中使用中间 CA 证书。
  • 使用证书固定,例如,在受信任的存储中使用单个服务器证书。

注意

每当Microsoft更改证书链的中间 CA 或轮换服务器证书时,应用程序都无法连接到数据库服务器,而不会发出警告。

证书固定问题

注释

如果您在客户端应用程序连接字符串中不使用sslmode=verify-fullsslmode=verify-ca设置,证书轮换不会影响您。 因此,无需执行本部分中的步骤。

切勿在应用程序中使用证书固定,因为它会中断证书轮换,例如中间 CA 的当前证书更改。 如果不知道证书固定是什么,那您很可能并没有在使用它。 若要检查 证书固定,请执行以下步骤:

  • 生成受信任的根存储区中的证书列表。
  • 如果您的受信任根存储中包含中间 CA 证书或单个 PostgreSQL 服务器证书,那么您正在使用证书固定。
  • 若要移除证书固定策略,请从受信任的根存储中删除所有证书,并添加 推荐的根 CA 证书

如果在执行这些步骤后仍遇到中间证书问题,请联系 Microsoft支持人员。 在标题中包含 ICA 旋转 2026

TLS 的其他注意事项

除了核心 TLS 配置和证书管理之外,其他几个因素会影响与 Azure Database for PostgreSQL 的加密连接的安全性和行为。 了解这些注意事项有助于就环境中的 TLS 实现做出明智的决策。

不安全和安全 TLS 版本

全球多个政府实体均制定了有关网络安全的 TLS 准则。 在美国,这些组织包括卫生与公众服务部以及国家标准与技术研究所。 TLS 提供的安全级别受 TLS 协议版本和受支持的密码套件的影响最大。

Azure Database for PostgreSQL 支持 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 PostgreSQL。 可以将 require_secure_transport 服务器参数更新为 OFF

重要

使用最新版本的 TLS 1.3 加密数据库连接。 可以通过将 ssl_min_protocol_version 服务器参数设置为 TLSv1.3 来指定最低 TLS 版本。 不要设置 ssl_max_protocol_version 服务器参数。

密码套件

密码套件是一组算法,其中包括密码、密钥交换算法和哈希算法。 将它们与 TLS 证书和 TLS 版本一起使用,以建立安全的 TLS 连接。 大多数 TLS 客户端和服务器都支持多个密码套件,有时支持多个 TLS 版本。 在建立连接期间,客户端和服务器 会协商 TLS 版本和密码套件,以便通过握手使用。 在此握手期间,将执行以下步骤:

  • 客户端发送可接受的密码套件列表。
  • 服务器从列表中选择最佳密码套件,并通知客户端选择选择。

Azure Database for PostgreSQL 中不可用的 TLS 功能

目前,Azure Database for PostgreSQL 不实现以下 TLS 功能:

  • 使用相互身份验证(mTLS)通过 TLS 进行基于 TLS 的客户端身份验证。
  • 自定义服务器证书(自带 TLS 证书)。