Puncte:0

Kubernetes Nginx Ingress cu Cert Manager și letsencrypt nu permite wildcarts în numele de domenii

drapel ru

Am un cluster Kubernetes auto-găzduit cu un Nginx Ingress. Cert-manager rulează și pe cluster, cu care încerc să obțin certificate SSL valide folosind Letsencrypt. Totul funcționează și primesc un certificat valabil de exemplu.com, www.example.com sau app1.example.com, dar nu pentru un wildcard general *.example.com. Dacă încerc în vreun fel să introduc un wildcard în intrarea mea în sec.tls.hosts, nu se generează niciun certificat pentru mine. Primesc ieșirea pentru

kubectl obține certificat

NUME GATA SECRET VARSTA
tls-test-cert False tls-electi-cert 20h

kubectl obține CertificateRequest

NUME APROBAT RESPINS GATA EMITENT SOLICITANT Vârsta
tls-test-cert-8jw75 True False letsencrypt-staging system:serviceaccount:cert-manager:cert-manager 18m

kubectl descrie CertificateRequest

[...]
Stare:
  Conditii:
    Ora ultimei tranziții: 2022-02-27T13:54:38Z
    Mesaj: Cererea de certificat a fost aprobată de cert-manager.io
    Motiv: cert-manager.io
    Stare: Adevărat
    Tip: Aprobat
    Ora ultimei tranziții: 2022-02-27T13:54:38Z
    Mesaj: Se așteaptă emiterea certificatului de la gateway-ul de comandă/tls-test-cert-8jw75-1425588341: „în așteptare”
    Motiv: în așteptare
    Stare: fals
    Tip: Gata
Evenimente:
  Introduceți Motivul Vârsta din mesaj
  ---- ------ ---- ---- -------
  Normal cert-manager.io 18m cert-manager Cererea de certificat a fost aprobată de cert-manager.io
  Normal OrderCreated 18m cert-manager Creat Order Resource Gateway/tls-test-cert-8jw75-1425588341
  Normal OrderPending 18m cert-manager Se așteaptă emiterea certificatului de la gateway-ul de comenzi/tls-test-cert-8jw75-1425588341: ""

My Nginx Ingress: (mi-am schimbat domeniul pe example.com pentru această postare)

---
apiVersion: networking.k8s.io/v1
fel: Intrare
metadate:
  nume: test-management
  namespace: gateway
  adnotari:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: „letsencrypt-staging”
    nginx.ingress.kubernetes.io/force-ssl-redirect: „adevărat”
    nginx.ingress.kubernetes.io/ssl-redirect: „adevărat”
    nginx.ingress.kubernetes.io/backend-protocol: „HTTP”
specificație:
  ingressClassName: nginx
  tls:
  - secretName: tls-test-cert
    gazde:
      - example.com
      - „*.example.com”
  reguli:
    - gazdă: example.com
      http:
        trasee:
          - cale: /
            pathType: Prefix
            backend:
              serviciu:
                nume: test-gateway
                port:
                  număr: 80
    - gazdă: „*.example.com”
      http:
        trasee:
          - cale: /
            pathType: Prefix
            backend:
              serviciu:
                nume: test-gateway
                port:
                  număr: 80

Emitent: (mi-am redactat e-mailul aici)

apiVersion: cert-manager.io/v1
fel: emitent
metadate:
  nume: letsencrypt-staging
  namespace: cert-manager
specificație:
  culme:
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    e-mail: *******
    privateKeySecretRef:
      nume: letsencrypt-staging
    rezolvatori:
      - http01:
          intrare:
            clasa: nginx

Proxy-ul meu invers (test-gateway) funcționează cu siguranță și trimite toate subdomeniile către site-ul meu. Mulțumesc anticipat pentru orice idee despre ce ar putea cauza acest lucru.

drapel in
Bună TaLeDa bun venit la SF. Din câte cunoștințele mele, [nu se pot emite certificate wildcard folosind http01 verificator](https://cert-manager.io/docs/faq/sync-secrets/#serving-a-wildcard-to-ingress-resources-in -different-namespaces-default-ssl-certificate) (deoarece ar fi nevoie de cereri http nelimitate pentru a dovedi toate gazdele `*`). Veți fi mai bucuroși să solicitați un [`wildcard: true`](https://cert-manager.io/docs/reference/api-docs/#acme.cert-manager.io/v1.Challenge) și apoi doar atașându-l la Ingress. Noroc!
TaLeDa avatar
drapel ru
Multumesc, asta mi-a rezolvat problema. O zi plăcută.
drapel in
Atunci vă rugăm să [adăugați și acceptați propriul răspuns](https://serverfault.com/help/self-answer), astfel încât ceilalți să poată beneficia de experiența dvs. -- acesta este scopul acestui site
Puncte:0
drapel ru

Mulțumesc pentru ajutor, am reușit să-mi rezolv problema:

Practic, a trebuit să găsesc o nouă abordare, deoarece nu se poate emite niciun certificat wild card cu http01. (Vezi aici: https://cert-manager.io/docs/configuration/acme/) După puțină cercetare, am ajuns la concluzia că este cel mai logic să folosești un solutor dns01. Documentația poate fi găsită aici: https://cert-manager.io/docs/configuration/acme/dns01/

Deoarece configurația dns01 depinde în mare măsură de furnizorul dvs. de DNS, nu voi publica soluția mea aici, dar o configurație utilă poate fi găsită cu ușurință cu documentația.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.