【问题标题】:Several TLS certs for the same host nginxinc kubernetes ingress同一主机的多个 TLS 证书 nginxinc kubernetes ingress
【发布时间】:2021-09-28 06:34:38
【问题描述】:

我正在使用 k8s 和 Nginx 入口控制器
(https://docs.nginx.com/nginx-ingress-controller/)。

我有一个主机名 test.example.com,它使用两个同名签名的证书(RSA 和 GOST)来处理 HTTPS 连接。

是否有使用 Nginx Ingress 终止这些 TLS 连接的正确方法?还是我最好使用外部负载均衡器?

【问题讨论】:

    标签: kubernetes nginx-ingress


    【解决方案1】:

    首先让我们弄清楚terminating 是什么:

    SSL 终止是指在将加密流量传递到 Web 服务器之前对其进行解密的过程。

    还有其他方法以及您提到的使用外部LoadBalancer 但正弦NginxLoadBalancer 无需添加另一个外部LoadBalancer

    保持简单

    • 保持简单,从长远来看,您会遇到更少的问题。
    • 使用nginx-controller 是一种合适的方式来完成它。
    • 添加更多“工具”还需要您维护它们,这会增加复杂性。


    【讨论】:

    • 我不仅需要一个用于 Web 服务的负载平衡器,我还需要在 kubernetes 环境中使用 nginx-ingress 解决一个特定问题(可以使用原始 Nginx 解决)。那就是为在一个主机名上使用不同密码套件的客户端终止 TLS 连接(或服务器指令可能是一个更好的词)。
    • 仍然是同一个概念,每个客户端使用什么样的证书都没有关系,主要目标是保持简单,使用Nginx可以解决它,并且可以支持多个证书类型。不需要再增加一层(LB)
    【解决方案2】:

    所以,答案实际上在 GitHub 页面的讨论中 https://github.com/nginxinc/kubernetes-ingress/issues/1899#issuecomment-905952871

    没有直接支持,但可以尝试使用 server-sn-ps 的解决方法:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress
      annotations:
        nginx.org/server-snippets: |
          ssl_certificate /etc/nginx/secrets/default-second-cafe-secret; # namespace-name
          ssl_certificate_key /etc/nginx/secrets/default-second-cafe-secret; # namespace-name
    spec:
      ingressClassName: nginx
      tls:
      - hosts:
        - cafe.example.com
        secretName: cafe-secret
      - hosts: # this part is needed so that the IC gets the second-cafe-secret from k8s API and store it on the file system at /etc/nginx/secrets/namespace-name
        - random-workaround-host 
        secretName: second-cafe-secret
      rules:
      - host: cafe.example.com
    

    【讨论】:

      猜你喜欢
      • 2020-04-21
      • 1970-01-01
      • 1970-01-01
      • 2020-06-26
      • 2019-11-05
      • 1970-01-01
      • 2017-08-15
      • 2023-04-09
      相关资源
      最近更新 更多