你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure SQL 数据库和 Azure SQL 托管实例将更改使用安全套接字层(SSL)或传输层安全性(TLS)启用的客户端应用程序/驱动程序的根证书,用于建立安全的 TDS 连接。 若要获取根证书颁发机构详细信息的最新列表,请参阅 Azure 证书颁发机构详细信息。 本文更详细地介绍了即将推出的更改、会受影响的资源,以及确保应用程序始终与数据库服务器连接所需执行的步骤。
打算进行什么样的更新?
证书颁发机构(CA)浏览器论坛 最近发布了 CA 供应商颁发的多个证书的报告,这些证书不符合要求。
根据行业合规要求,CA供应商开始撤销不符合要求的CA的证书,要求服务器使用由合规CA颁发的证书,并且这些证书必须由合规CA的CA证书签署。 由于 SQL 数据库和 SQL 托管实例当前使用了其中一个不符合的证书,客户端应用程序将使用这些证书来验证其 TLS 连接,因此我们需要确保采取适当的作,以最大程度地降低对 Azure SQL 服务器的潜在影响。
如果在从 SQL 客户端TrustServerCertificate=false()进行连接时使用服务器证书的完整验证,则需要确保 SQL 客户端能够验证 根证书颁发机构中列出的新根证书。
如何知道我的应用程序是否可能会受影响?
使用 SSL/TLS 并验证根证书的所有应用程序都需要更新根证书才能连接到 Azure SQL 数据库和 Azure SQL 托管实例。
如果你当前未使用 SSL/TLS,则不会影响应用程序的可用性。 可以通过查看连接字符串来验证客户端应用程序是否正在尝试验证根证书。 如果 TrustServerCertificate 显式设置为 true,则不会受到影响。
如果你的客户端驱动程序使用 OS 证书存储(就像大多数驱动程序一样),并且你的 OS 定期维护,那么此更改可能不会影响你,因为我们正在切换的根证书应该已经在你的受信任的根证书存储中可用。 检查 根证书颁发机构 列表,并验证受信任的根证书存储中是否存在其中一个证书。
如果你的客户端驱动程序利用本地文件证书存储,为避免应用程序的可用性因证书被意外吊销而中断,或要更新已吊销的证书,请参阅我需要做什么来维护连接部分。
我需要做什么来维护连接
若要避免应用程序的可用性因证书被意外吊销而中断,或要更新已吊销的证书,请执行以下步骤:
从 根证书颁发机构下载以下证书。
- DigiCert 全局根 G2
- Microsoft ECC 根证书颁发机构 2017
- Microsoft RSA 根证书颁发机构 2017
将证书导入客户端计算机上的受信任根证书存储。 导入证书的步骤取决于使用的作系统和客户端驱动程序。 例如,如果使用 Windows,可以使用Microsoft管理控制台(MMC)将证书导入受信任的根证书颁发机构存储。
影响有哪些?
如果要按此处所述验证服务器证书,则应用程序的可用性可能会中断,因为无法访问数据库。 根据应用程序,可以接收各种错误消息,包括但不限于:
- 证书/已吊销的证书无效
- 连接超时
- 错误(如果适用)
常见问题
如果我不使用 SSL/TLS,是否仍需要更新根 CA?
如果不使用 SSL/TLS,则不需要执行与此更改相关的任何操作。 不过,你仍然应该制定一个计划,以便开始使用最新的 TLS 版本,因为我们计划在不久的将来实施 TLS。
如果证书过期时未更新根证书,会发生什么情况?
如果在根证书过期之前未更新根证书,则通过 SSL/TLS 进行连接并验证根证书的应用程序将无法与 SQL 数据库和 SQL 托管实例通信,应用程序将遇到与 SQL 数据库和 SQL 托管实例的连接问题。
是否需要为此更改对维护停机时间进行计划?
否。 由于更改仅发生在要连接到服务器的客户端,因此不需要维护停机时间来进行此更改。
如果无法安排停机时间来进行此更改,该怎么办?
由于用于连接到服务器的客户端需要更新 修补程序部分中所述的证书信息,因此在这种情况下,我们不需要停机服务器。
如果我在 2020 年 11 月 30 日之后创建新的服务器,我是否会受影响?
对于新服务器,可以使用新颁发的证书为应用程序使用 SSL/TLS 进行连接。
Microsoft 更新其证书的频率是多少?或者说过期策略是怎样的?
SQL 数据库和 SQL 托管实例使用的这些证书由受信任的证书颁发机构(CA)提供。 因此,SQL 数据库和 SQL 托管实例上对这些证书的支持与 CA 对这些证书的支持相关联。 但是,这些预定义证书中可能存在无法预料的 bug,这些 bug 需要尽早进行修复,正如此示例一样。
如果我使用的是只读副本,是否需要仅在主服务器或所有只读副本上执行此更新?
由于此更新是客户端更改,因此,如果客户端用于从副本服务器读取数据,则还需要为这些客户端应用更改。
是否有服务器端查询可用来验证是否正在使用 SSL/TLS?
由于此配置是客户端的,因此在服务器端无法获取信息。
如果我有其他问题,该怎么办?
如果你有支持计划并需要技术帮助,请创建 Azure 支持请求,详见如何创建 Azure 支持请求。