我想在Nginx入口上禁用SNI。如果使用如下所示的使用openssl的呼叫:
List<String> UserIdsList = new ArrayList<>();
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String productId = ds.getKey();
UserIdsList.add(productId);
}
int UserListSize = UserIdsList.size();
然后,我希望nginx-ingress仅使用我配置的证书,而不要使用fake-k8s-cert。
如果浏览Web应用程序,则证书有效,但我还需要设置默认证书。
下面是一个示例:
openssl s_client -showcerts -connect ***********.gr:443
我还配置了入口以在所有主机名上使用秘密而不指定主机: tls: -secretName:****** wte-ingress
答案 0 :(得分:1)
如上所述here
定义了没有主机的入口时,将使用默认服务器(nginx中的_)。
您需要向openssl命令提供-servername
,以检查您域的证书,例如:
openssl s_client -showcerts -connect ***********.gr:443 -servername *********.gr
答案 1 :(得分:1)
问题是客户端应用程序说他们不支持SNI,并且不能在其请求中发送服务器名称。因此,我们需要在请求中提供带或不带服务器名的相同证书
答案 2 :(得分:1)
Default SSL Certificate标志解决了OP中提到的问题。
在Nginx文档中,您可以阅读:
NXINX Ingress控制器提供标志
--default-ssl-certificate
。该标志引用的机密包含访问全部捕获服务器时要使用的默认证书。如果未提供此标志,NGINX将使用自签名证书。例如,如果默认名称空间中包含TLS秘密foo-tls,则在nginx-controller部署中添加--default-ssl-certificate = default / foo-tls。
默认证书也将用于入口tls:没有secretName选项的部分。