NatronTech Logo
Netzwerk

Cert-Manager & Zertifikate

Stage
Experimental
Requires

Cluster Issuer

Einrichtung und Verwaltung von ClusterIssuers für TLS-Zertifikate.

Was ist ein ClusterIssuer?

Ein ClusterIssuer ist eine Ressource des cert-manager, die als clusterweite Zertifizierungsstelle (CA) fungiert. Im Gegensatz zu einem namespaced Issuer können Ressourcen aus allen Namespaces auf einen ClusterIssuer zugreifen. Dies ermöglicht die zentrale Verwaltung eines "Let's Encrypt"-Kontos für den gesamten Cluster.

Offizielle cert-manager Dokumentation

Schnellstart (HTTP-01)

Der schnellste Weg zu einem gültigen TLS-Zertifikat ist die ACME HTTP-01 Challenge. Voraussetzung hierfür ist lediglich eine öffentliche Domain, die auf die externe IP Ihres Ingress-Controllers verweist.

1. ClusterIssuer erstellen

Legen Sie eine Datei cluster-issuer.yaml mit folgendem Inhalt an:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: info@example.com
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
    - http01:
        ingress:
          class: nginx

2. Ingress konfigurieren

Ergänzen Sie Ihren Ingress um die erforderliche Annotation:

metadata:
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  tls:
  - hosts:
    - example.com
    secretName: example-com-tls

Challenge-Methoden: HTTP-01 vs DNS-01

FeatureHTTP-01DNS-01
KomplexitätNiedrigMittel
VoraussetzungPort 80 öffentlich erreichbarAPI-Zugriff auf DNS-Provider
Wildcards (*.example.com)NeinJa
Interne DiensteNeinJa

Verwenden Sie HTTP-01 für Standard-Webseiten. DNS-01 ist zwingend erforderlich für Wildcard-Zertifikate oder wenn der Dienst nicht öffentlich erreichbar ist (z.B. interne Dashboards).

DNS Provider (Cloudflare)

Für die Nutzung von DNS-01 Challenges (z.B. für Wildcards) benötigt cert-manager Zugriff auf Ihre DNS-Verwaltung.

1. API Token Secret erstellen

Hinterlegen Sie Ihren Cloudflare API-Token in einem Kubernetes Secret:

apiVersion: v1
kind: Secret
metadata:
  name: cloudflare-api-token
  namespace: cert-manager
type: Opaque
stringData:
  api-token: <IHRE_CLOUDFLARE_API_TOKEN>

2. ClusterIssuer für Cloudflare konfigurieren

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-dns
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: info@example.com
    privateKeySecretRef:
      name: letsencrypt-dns
    solvers:
    - dns01:
        cloudflare:
          email: info@example.com
          apiTokenSecretRef:
            name: cloudflare-api-token
            key: api-token

Wildcard-Zertifikate

Mit Wildcard-Zertifikaten (z.B. *.example.com) sichern Sie beliebig viele Subdomains (app1.example.com, app2.example.com) mit einem einzigen Zertifikat ab.

Voraussetzungen:

  • Es MUSS der DNS-01 Challenge-Typ verwendet werden.
  • Im Ingress wird der Host als Wildcard angegeben:
spec:
  tls:
  - hosts:
    - "*.example.com"
    secretName: wildcard-example-com-tls

Produktion vs. Staging

Let's Encrypt limitiert die Anzahl der Zertifikatsausstellungen in der Produktionsumgebung strikt (Rate Limits).

Nutzen Sie für Tests immer die Staging-Umgebung!

Staging ClusterIssuer

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-staging
spec:
  acme:
    # Staging URL
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    email: info@example.com
    privateKeySecretRef:
      name: letsencrypt-staging
    solvers:
    - http01:
        ingress:
          class: nginx

Zertifikate aus der Staging-Umgebung sind technisch valide, werden aber von Browsern als "nicht vertrauenswürdig" angezeigt. Sie eignen sich perfekt, um die Konfiguration zu validieren, ohne Produktions-Limits zu verbrauchen.

Best Practices

Zur Härtung Ihrer Ingress-Konfiguration empfehlen wir folgende Einstellungen:

  • Algorithmus: Setzen Sie auf ECDSA statt RSA für gesteigerte Performance und Sicherheit.
  • Rotation: Erzwingen Sie regelmässige Erneuerungen mit Always.

Beispiele finden Sie in der Ingress NGINX Dokumentation.

On this page