Azure API 管理 - TLS 1.3 和协商客户端证书

问题描述 投票:0回答:1

根据此博文,如果启用“协商客户端证书”,Azure API 管理应默认为 TLS 1.2,因为 TLS 1.3 中不允许这样做。

我在部署实例后在自定义域上启用了此功能,但在测试时,它继续提供 TLS 1.3。 在“协议 + 密码”下,我只为客户端和后端协议启用了 TLS 1.2(1.3 甚至不在列表中)。

命令:

docker run --rm -ti drwetter/testssl.sh --protocols https://[my-apim-instance].azure-api.net

输出:

 Testing protocols via sockets except NPN+ALPN

 SSLv2      not offered (OK)
 SSLv3      not offered (OK)
 TLS 1      not offered
 TLS 1.1    not offered
 TLS 1.2    offered (OK)
 TLS 1.3    offered (OK): final              <--- I would like this to say "not offered"
 NPN/SPDY   not offered
 ALPN/HTTP2 not offered
azure azure-api-management tls1.3
1个回答
0
投票

我不是安全专家,但这是我对 tls 1.2 和 1.3 的理解

客户端将启动 tls 请求,如果它想使用 TLS 1.3,它将发送一个 ClientHello,其中“legacy_version”设置为 0x0303(这意味着 TLS 1.2 而不是 TLS 1.3),并且“supported_versions”扩展为 0x0304(这意味着TLS 1.3) 表示为支持的最高版本。

在您的情况下,testssl.sh 必须包含 tls 1.3 作为受支持的版本。 APIM 查看客户端请求并检查其密码配置。宾果游戏! APIM 可以支持 tls 1.3 密码,因此返回给客户说

i can do tls 1.3, let's use the highest security

因此,请在 apim 的密码选项卡中禁用 tls 1.3 密码并再次运行测试,它应该只使用 tls 1.2。或者检查testssl.sh是否有一个仅请求tls 1.2的开关。

  • TLS_AES_256_GCM_SHA384
  • TLS_AES_128_GCM_SHA256
  • TLS_CHACHA20_POLY1305_SHA256
  • TLS_AES_128_CCM_8_SHA256
  • TLS_AES_128_CCM_SHA256

Cipher suites defined for TLS 1.2 cannot be used in TLS 1.3, and vice versa, unless otherwise stated in their definition. 

关于您提到的博客文章的另一条注释,似乎表明 tls 1.3 只会破坏客户端证书的一个非常狭窄的情况。值得检查一下您是否确实需要禁用它。

To clarify: "Client certificate negotiation" is supported in TLS 1.3 with Azure API Management.  Renegotiation, API clients making new handshakes while in the middle of a connection, is not supported in TLS 1.3 with Azure API Management.

© www.soinside.com 2019 - 2024. All rights reserved.