gpt4 book ai didi

ssl - 在 Kubernetes 和 NGINX 中使用自签名证书设置 mTLS

转载 作者:行者123 更新时间:2023-12-02 11:34:29 26 4
gpt4 key购买 nike

我有一个托管 REST 回显服务的 Kubernetes 集群 (AKS)。该服务通过 HTTP 运行良好。我正在使用 NGINX 入口来路由流量。我现在想通过 HTTPS 和 mTLS 设置此服务,因此强制客户端指定一个能够与回显服务通信的证书。这是一个 POC,所以我使用的是自签名证书。
我需要设置哪些 Kubernetes 组件才能实现这一目标?我阅读了 NGINX 文档,但无法理解是否需要在 Kubernetes 集群中创建证书颁发机构/证书管理器并使用它来配置入口服务以执行 mTLS 步骤。我可以在入口处终止 SSL(在执行 mTLS 之后)并允许从入口到回显服务的不安全通道。
我希望有这种设置经验的人可以提供一些指导。
谢谢!

最佳答案

首先,mTLS 和 TLS/SSL 终止并不完全相同。 mTLS 是 mutual authentication 🤝 表示客户端对服务器进行身份验证,服务器对客户端进行身份验证。
通常,SSL 终止负责服务器对客户端的身份验证,但它需要客户端支持服务器才能对客户端进行身份验证。
此外,Certificate Authority我相信你指的是certificate manager是2个不同的东西。
对于 Kubernetes,您可以设置 TLS/SSL termination on an Ingress使用 ingress controller like Nginx .您可以totally use a self-signed certificate with your own Certificate Authority with this .唯一的事情是您的请求将不会被验证,但您的客户端/浏览器将不会被验证,除非 CA(证书颁发机构)被添加为受信任的实体。
现在,对于 mTLS,您不必关心是否使用完全相同的 CA、Cert 和 Key 来进行两种方式的身份验证。但是,您必须强制您的入口对客户端进行身份验证,并且使用 Nginx 入口 Controller ,您可以使用以下注释来做到这一点:

nginx.ingress.kubernetes.io/auth-tls-verify-client: "on"
nginx.ingress.kubernetes.io/auth-tls-secret: "default/mycerts"
您将在 K8s 中创建上述 secret ,如下所示:
kubectl create secret generic mycerts --from-file=tls.crt=server.crt --from-file=tls.key=server.key --from-file=ca.crt=ca.crt
blog 中的更多详细信息.
注意:服务网格如 Istio , Linkerd , 和 Consul在您的服务之间开箱即用地支持 mTLS。
✌️

关于ssl - 在 Kubernetes 和 NGINX 中使用自签名证书设置 mTLS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63025817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com