👏

Nginx Ingress ControllerでIngressに証明書Secretを指定してもデフォルトの証明書があたってしまう件

2022/10/09に公開

現象

spec.tls.secretNameに証明書Secretを指定していても、その証明書が使われずに、Kubernetes Ingress Controller Fake Certificateが利用されてしまいます。

このような感じ

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  creationTimestamp: "2022-10-08T19:12:51Z"
  generation: 1
  name: test-ingress
  namespace: default
  resourceVersion: "1257407"
  uid: 715e2056-3794-41c8-8f7b-e4e94f5cf48d
spec:
  ingressClassName: nginx
  rules:
  - host: ingress.test.jp
    http:
      paths:
      - backend:
          service:
            name: test-service
            port:
              number: 8080
        path: /
        pathType: Prefix
  tls:
  - hosts:
    - ingress.test.jp
    secretName: cert-secret
status:
  loadBalancer:
    ingress:
    - ip: 192.168.11.61

原因

CNが一致していないとそうなるので、証明書つくるときにhostとhostsで指定する予定のCNでちゃんと作らないといけない。

今回のドメインで、オレオレ証明書の場合は、以下のような感じでつくる。

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout rsa.key -out rsa.crt -subj "/CN=ingress.test.jp/O=system"

参考

https://stackoverflow.com/questions/71127151/ssl-certificate-added-but-shows-kubernetes-ingress-controller-fake-certificate
https://sotoiwa.hatenablog.com/entry/2020/12/23/034559

Discussion