如何通过 GKE 上的 Ingress-Nginx 正确配置 Kubernetes 仪表板



我收到错误:

[lua] certificate.lua:89: call(): failed to set DER cert: SSL_add0_chain_cert() failed, context: ssl_certificate_by_lua*, 

当配置入口以在 GKE 上为 Kubernetes 仪表板提供服务时。这个麻烦只在仪表板上意识到。在其他命名空间中,模拟配置工作正常。我的意思是使用相同的SSL证书。

Kubernetes 版本:v1.14.7-gke.10

入口控制器版本:0.26.1

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
ingress.kubernetes.io/force-ssl-redirect: "true"
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"
nginx.ingress.kubernetes.io/secure-backends: "true"
name: kubernetes-dashboard
spec:
rules:
- host: gke-dashboard.example.com
http:
paths:
- backend:
serviceName: kubernetes-dashboard
servicePort: 443
path: /
tls:
- hosts:
- gke-dashboard.example.com
secretName: example-ssl

入口的配置是正确的。密钥位于 SSL 证书捆绑包文件中。 我在一个包含 5 个证书的crt文件中使用证书链。

示例代码段为:

-----BEGIN CERTIFICATE-----
MIIF4zCCBMugAwIBAhIMUCJSvK6eipIjbvq7MA0GCSqGSIb3DQEBCwUAMEwxGzAJ
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIETTCCAzWgAwIBAgILBAABBAAABRE9wNjEwDQYJKoZIhvcNAQELBQAwVzELMAkG
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEMTCCAxmgAwIBAgILBAAAAhhBMYnGOdwwDQYJKoZIhvcNAQELBQAwTDEgMB4G
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIELzCCAxegAwIBUGILBAASOMEBL07hNwIwDQYJKoZIhvcNAQEFBQAwVzELMAkG
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEDjCCAvagAwIBAgILBAATEXTBHkSl82UwDQYJKoZIhvcNAQEFBQAwVzELMAkG
...
-----END CERTIFICATE-----

在我的捆绑包中,我有几个不必要的重叠证书。这就是为什么我在转换为 DER 格式的过程中出现错误的原因。

删除不必要的证书后,问题得到解决。

顺便说一下,这样的捆绑包在入口控制器版本 0.20.0中工作正常。 这就是为什么在我的故障排除中,我认为我的证书中没有错误。

也许这些信息对某人有帮助。

最新更新