AKS 使用 TLS 1.3 加密连接,但我们需要 1.2。如何配置?

AKS encrypts connection with TLS 1.3, but we need 1.2. How to configure?

我们在 Azure 上的 kubernetes 上有一个应用程序和 API、运行,使用自动创建 letsencrypt 证书的 nginx-ingress 和 cert-manager。与 application/API 的连接使用 TLS1.3 加密。

从一个较旧的应用程序 运行 在 Win 2012 服务器上,我们想要从 API(在 k8s 上)检索数据。这不成功,因为该服务器不支持 TLS1.3。

我想在 kubernetes 上将 TLS 的最低版本设置为 1.2。 我怎样才能做到这一点?

我读到,使用 kubelet 可以配置 tls-min-version,但我不知道如何应用它。

注意:我们使用az aks create创建k8s集群。

当您的 win 服务器连接到 K8s 上的应用程序时,您必须在 Nginx 入口级别设置 TLS 的版本。

Nginx ingress & cert-manager 是服务器连接和访问的点 API 所以你只需要更新 Nginx 的 TLS 版本。

您可以通过更改 Nginx 入口控制器的配置映射来实现。此外,您可能还需要更新证书,默认情况下可能有机会 Let's encrypt(CA) 提供默认的 TLS 1.3。

因此,在为 Nginx 启用 TLS 1.2 之后,您可能需要 re-generate cert-manager 秘密(证书).

Configmap Nginx 入口控制器

kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-config
  namespace: ingress-nginx
data:
  ssl-ciphers: "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"
  ssl-protocols: "TLSv1.2 TLSv1.3"

以上 configmap 将为 Nginx 入口控制器启动两个 TLS 版本。