gpt4 book ai didi

SSL 终止 Nginx 入口 Controller

转载 作者:太空宇宙 更新时间:2023-11-03 13:00:14 24 4
gpt4 key购买 nike

我无法在我的 kubernetes 集群上工作的 nginx 入口 Controller 上获得 TLS 终止。

我的入口规则如下所示:

Christophers-MacBook-Pro-2:acme-microservice cjaime$ kubectl describe ing myapp-ingress-1
Name: myapp-ingress-1
Namespace: default
Address:
Default backend: default-http-backend:80 (<none>)
TLS:
acme-io terminates myapp-default.acme.io
Rules:
Host Path Backends
---- ---- --------
myapp-default.acme.io
/ myapp:80 (<none>)
Annotations:
ingress.kubernetes.io/ssl-redirect: true
kubernetes.io/ingress.class: nginx
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal UPDATE 53m (x2 over 1h) nginx-ingress-controller Ingress default/myapp-ingress-1
Normal UPDATE 53m (x2 over 1h) nginx-ingress-controller Ingress default/myapp-ingress-1
Normal UPDATE 53m (x2 over 1h) nginx-ingress-controller Ingress default/myapp-ingress-1
Normal UPDATE 53m (x2 over 1h) nginx-ingress-controller Ingress default/myapp-ingress-1

每当我尝试从浏览器访问它时,我都会得到以下服务器证书

Server certificate
subject=/O=Acme Co/CN=Kubernetes Ingress Controller Fake Certificate
issuer=/O=Acme Co/CN=Kubernetes Ingress Controller Fake Certificate

这会阻止我创建有效的 SSL 连接。我知道我的 secret 是正确的,因为在使用 openssl 时,我得到了一个有效的连接,如下所示

openssl s_client -servername myapp-default.acme.io -connect us1a-k8s-4.acme.io:31443 -showcerts
CONNECTED(00000003)

<content omitted>

Start Time: 1528241749
Timeout : 300 (sec)
Verify return code: 0 (ok)
---

但是,如果我在省略服务器名的情况下运行相同的命令,我会得到相同的假证书和连接错误

openssl s_client  -connect us1a-k8s-4.acme.io:31443 -showcerts
CONNECTED(00000003)
depth=0 O = Acme Co, CN = Kubernetes Ingress Controller Fake Certificate
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 O = Acme Co, CN = Kubernetes Ingress Controller Fake Certificate
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/O=Acme Co/CN=Kubernetes Ingress Controller Fake Certificate
i:/O=Acme Co/CN=Kubernetes Ingress Controller Fake Certificate

<content omitted>

Start Time: 1528241957
Timeout : 300 (sec)
Verify return code: 21 (unable to verify the first certificate)

最佳答案

您使用 openssl 的测试已正确执行,并且当通过 SNI 在请求中提供该主机名时,它们表明 nginx 确实为 myapp-default.acme.io 提供了有效证书。 .这与您在 Ingress 中的配置一致。

对于其他主机名或没有主机名的请求,将发送默认证书。该证书将存储在 Secret 中,并通过命令行参数配置到入口 Controller (--default-ssl-certificate=$(POD_NAMESPACE)/tls-ingress)。

您的浏览器警告可能是由于主机名不匹配或浏览器中缓存了假证书。我建议您查看如何刷新 b 浏览器中的证书缓存和/或使用 curl 重做测试:

curl -v https://myapp-default.acme.io

如果仍然无法正常工作,您可能受到了 #1954 的影响。 - 更新 nginx-ingress-controller。

关于SSL 终止 Nginx 入口 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50710824/

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