为 Azure Cosmos DB 即将推出的 TLS 1.3 支持做好准备

适用对象: NoSQL MongoDB Cassandra Gremlin

重要

2025 年 3 月 31 日起, 将为 Azure Cosmos DB 启用对 TLS 1.3 的支持。

从 2025 年 8 月 31 日开始,我们正式弃用 TLS 1.0/1.1。 仅支持 TLS 1.2 或更高版本。

Azure Cosmos DB 将在全球范围内在其平台上启用公共终结点上的 TLS 1.3 支持,以符合安全最佳做法。 本文提供了有关如何为 Azure Cosmos DB 即将推出的 TLS 1.3 支持做好准备的额外指导。

与前一代相比,TLS 1.3 引入了大量增强功能。 TLS 1.3 改进侧重于性能和安全性,包括更快的握手速度和简化的一组更安全的密码套件,即 TLS_AES_256_GCM_SHA384 和 TLS_AES_128_GCM_SHA256。 值得注意的是,TLS 1.3 通过消除不支持它的密钥交换算法来优先考虑完美转发保密 (PFS)。 

使用最新的可用 TLS 版本的客户端会在 TLS 1.3 可用时自动选取它。 除了 TLS 1.3 之外,Azure Cosmos DB 还继续支持 TLS 1.2。 

以下是 TLS 1.3 启用的一些已知问题、潜在影响和缓解措施。

已知问题、影响和缓解措施

  • JDK 相关问题4.1.68.Final4.1.86.Final(含)之间的 io.netty 版本包含一个 bug,当 Java 运行时引擎不支持 TLS 1.3 时,将导致客户端在直接模式连接中 TLS 握手失败。 Azure Cosmos DB Java SDK 版本(范围从 4.20.0 到 4.40.0(含))对于存在此 bug 的 io.netty 具有转换依赖性。 客户端失败,出现 java.lang.IllegalArgumentException 异常,如此处所示。

     Caused by: io.netty.handler.codec.DecoderException: javax.net.ssl.SSLHandshakeException: General OpenSslEngine problem at 
    ...       
    Caused by: java.lang.IllegalArgumentException: TLSv1.3 at sun.security.ssl.ProtocolVersion.valueOf(ProtocolVersion.java:187)
    
  • 缓解建议

    • 选项 1: (必需) 至少将 Azure Cosmos DB Java SDK 升级到 建议的最低版本
    • 选项 2:我们认识到升级到最新的 SDK 版本可能并不总是可行的。 将应用程序转换为最新的 SDK 时,可以通过将连接切换到 网关模式来解决此问题。 在生产环境中部署应用程序之前,请务必对其进行全面测试。

备注

使客户端能够使用 TLS 1.3 需要 Java 运行时支持 TLS 1.3