Azure Database for PostgreSQL ... 笔记

Azure Database for PostgreSQL 中的 TLS 证书固定及最佳实践

在 Azure Database for PostgreSQL 中,TLS 用于加密客户端与服务器之间的数据,服务器证书由受信任的证书颁发机构(CA)签发。证书锁定(Certificate pinning)是一种客户端侧的安全机制,将信任限制在特定证书上,而非默认的信任存储。服务器无法检测客户端是否配置了证书锁定,仅能观察到 TLS 握手成功或失败。尽管证书锁定历史上曾用于防范中间人攻击,但它引入了运维脆弱性,尤其是在证书轮换期间。当服务器证书或 CA 发生变更时,采用证书锁定的客户端会出现连接失败。相反,推荐使用基于 CA 的信任模型,即信任根 CA 而非单个证书。客户端应使用标准 TLS 验证机制,针对 Azure 文档中列出的根 CA 进行验证,并维护灵活且最新的信任存储。PostgreSQL 配置中推荐使用 sslmode=verify-ca 或 sslmode=verify-full,因为它们可针对受信任的 CA 进行验证,而不暗示证书锁定。在 CA 轮换期间,客户端应在添加新的根 CA 的同时保留旧的 CA,直至过渡完成。这种结合 CA 的方法可确保验证过程不间断,使应用程序能够抵御证书变更的影响。