我想在nginx-ingress上禁用SNI。如果使用如下所示的openssl调用:
openssl s_client -showcerts -connect ***********.gr:443然后我希望nginx-ingress只使用我配置的证书,而不是fake-k8s-cert。
如果浏览web应用程序,证书正在工作,但我还需要设置默认证书。
示例如下:
[root@production ~]# openssl s_client -showcerts -connect 3dsecureuat.torawallet.gr:443
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
-----BEGIN CERTIFICATE-----
---
Server certificate
subject=/O=Acme Co/CN=Kubernetes Ingress Controller Fake Certificate
issuer=/O=Acme Co/CN=Kubernetes Ingress Controller Fake Certificate
---
Acceptable client certificate CA names
/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA
...我还将入口配置为在所有主机名上使用密码,而不指定主机: tls:- secretName:*wte- ingress
发布于 2020-04-21 19:58:02
正如OP提到的,Default SSL Certificate标志解决了这个问题。
在Nginx文档中,您可以阅读:
NXINX入口控制器提供标志
--default-ssl-certificate。此标志所指的秘密包含访问通用服务器时要使用的默认证书。如果未提供此标志,NGINX将使用自签名证书。
例如,如果在默认名称空间中有一个TLS密钥foo-tls,那么在nginx-controller部署中添加-- default -ssl-certificate=default/foo-tls。
默认证书也将用于没有secretName选项的入口tls:节。
发布于 2020-04-07 19:13:45
如前所述,here
当定义了没有主机的入口时,将使用默认服务器(_ in nginx)。
您需要为openssl命令提供-servername,以检查您的域的证书,例如:
openssl s_client -showcerts -connect ***********.gr:443 -servername *********.gr发布于 2020-04-07 19:54:34
问题是客户端应用程序说它们不支持SNI,并且不能在其请求中发送servername。因此,我们需要在请求中提供相同的证书,无论是否带有servername
https://stackoverflow.com/questions/61075668
复制相似问题