Nginx入口上的默认证书

时间:2020-04-07 08:19:47

标签: kubernetes nginx-ingress

我想在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

3 个答案:

答案 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选项的部分。