bg-tutorials

So installieren Sie ein ACME SSL-Zertifikat in Kubernetes

Die Installation eines ACME SSL-Zertifikats in Kubernetes ist dank ausgereifter Tools wie cert-manager und breiter Unterstützung durch kommerzielle Zertifizierungsstellen jetzt ein standardisierter und flexibler Prozess. Ganz gleich, ob Sie Produktions-Workloads hinter NGINX Ingress, Traefik oder einem anderen Gateway laufen lassen, Sie können sicheres HTTPS mit voller Kontrolle automatisieren.

ACME SSL auf Kubernetes installieren

Diese Anleitung zeigt Ihnen, wie Sie ein ACME SSL-Zertifikat in Kubernetes mit cert-manager installieren. Wir behandeln die Installation, die Einrichtung eines Ausstellers mit External Account Binding (EAB) und die Ausstellung von Zertifikaten zum Schutz Ihrer Ingress-Dienste.


Was Sie brauchen

Bevor Sie eintauchen, vergewissern Sie sich:

  • Sie haben einen funktionierenden Kubernetes-Cluster (v1.23+ empfohlen)
  • kubectl ist konfiguriert und funktioniert
  • Sie haben Zugriff auf Ihren Ingress Controller (z.B. NGINX, Traefik)
  • Ihre Domain verweist auf die öffentliche IP Ihres Ingress-Controllers
  • Sie haben EAB-Zugangsdaten von Ihrer ACME-kompatiblen CA:
    • ACME-Verzeichnis-URL (z.B. https://acme.example.com/v2/DV)
    • EAB-Schlüssel-Identifikator (KID)
    • EAB HMAC-Schlüssel

Hinweis: https://acme.example.com/v2/DV wird in diesem Leitfaden als Platzhalter für die URL des ACME-Verzeichnisses verwendet. Ersetzen Sie ihn durch den echten Endpunkt Ihrer Zertifizierungsstelle.


Schritt 1 – Installieren Sie cert-manager

cert-manager ist der am häufigsten verwendete Kubernetes-native ACME-Client. Er läuft als Controller, der die Ausstellung und Erneuerung von Zertifikaten verwaltet.

Installation über Helm (bevorzugt für die Produktion):

kubectl create namespace cert-manager
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--version v1.14.4 \
--set installCRDs=true

Warten Sie ein paar Sekunden und bestätigen Sie, dass alle Pods ausgeführt werden:

kubectl get pods -n cert-manager

Sie sollten drei Pods sehen: cert-manager, cert-manager-webhook und cert-manager-cainjector.


Schritt 2 – Erstellen eines Kubernetes-Geheimnisses für EAB-Zugangsdaten

Erstellen Sie ein Kubernetes-Geheimnis, um Ihren EAB-Schlüssel sicher zu speichern:

kubectl create secret generic acme-eab-secret \
--namespace cert-manager \
--from-literal=eab-kid="YOUR_EAB_KID" \
--from-literal=eab-hmac-key="YOUR_EAB_HMAC_KEY"

Ersetzen Sie sie durch Ihre tatsächlichen Anmeldedaten. Vermeiden Sie Leerzeichen beim Kopieren und Einfügen.


Schritt 3 – Definieren Sie einen ClusterIssuer oder Issuer

Erstellen Sie nun eine Ressource ClusterIssuer (für alle Namespaces) oder Issuer (einzelner Namespace), die cert-manager unter Verwendung der EAB-Anmeldeinformationen mit Ihrer ACME CA verbindet.

Hier ist ein Beispiel für ClusterIssuer YAML:

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: acme-issuer
spec:
acme:
server: https://your.acme-server.com/v2/DV
email: [email protected]
privateKeySecretRef:
name: acme-private-key
externalAccountBinding:
keyID: YOUR_EAB_KID
keySecretRef:
name: acme-eab-secret
key: eab-hmac-key
solvers:
- http01:
ingress:
class: nginx

Wenden Sie es an:

kubectl apply -f clusterissuer.yaml

Ersetzen Sie ingress.class: nginx durch traefik, nginx-internal oder was auch immer Ihre ingress-Klasse ist. Sie finden dies in der Dokumentation Ihres Ingress-Controllers.


Schritt 4 – Erstellen Sie eine Zertifikatsressource

Sobald Ihr ClusterIssuer fertig ist, erstellen Sie eine Zertifikatsressource, die cert-manager mitteilt, welche Domäne gesichert werden soll. Hier ist ein Beispiel:

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-ssl-cert
namespace: default
spec:
secretName: my-ssl-cert-tls
issuerRef:
name: acme-issuer
kind: ClusterIssuer
commonName: yourdomain.com
dnsNames:
- yourdomain.com
- www.yourdomain.com

Wenden Sie es an:

kubectl apply -f certificate.yaml

cert-manager verwendet den Aussteller, löst die Herausforderung über Ingress und speichert das ausgestellte Zertifikat als Kubernetes TLS-Geheimnis.


Schritt 5 – Verweisen Sie auf das Zertifikat in Ihrem Ingress

Aktualisieren Sie Ihre Ingress-Regel, um das generierte Zertifikat zu verwenden:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
namespace: default
annotations:
cert-manager.io/cluster-issuer: acme-issuer
spec:
tls:
- hosts:
- yourdomain.com
- www.yourdomain.com
secretName: my-ssl-cert-tls
rules:
- host: yourdomain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: your-service
port:
number: 80

Wenden Sie es an:

kubectl apply -f ingress.yaml

Sobald cert-manager den Vermerk erkennt, beginnt er mit der Lösung der ACME-Herausforderung und stellt Ihr Zertifikat aus.


Schritt 6 – Überprüfen des Zertifikats und automatische Erneuerung

Um zu überprüfen, ob alles funktioniert:

kubectl beschreiben Zertifikat my-ssl-cert

Suchen Sie nach dem erfolgreich ausgestellten Zertifikat.

Um die Einrichtung der Erneuerung zu überprüfen, führen Sie aus:

kubectl get certificaterequests

cert-manager führt die Erneuerung automatisch ~30 Tage vor Ablauf durch. Sie können eine Erneuerung wie folgt simulieren:

kubectl cert-manager renew my-ssl-cert


Allgemeine Fragen

Die Einrichtung von ACME SSL in Kubernetes kann sich etwas abstrakt anfühlen, insbesondere wenn Sie mit Ingress Controllern, Secrets und DNS-Einträgen jonglieren. Im Folgenden beantworten wir einige häufige Fragen, mit denen Entwickler bei der Installation von ACME-Zertifikaten in einer Kubernetes-Umgebung konfrontiert werden, unabhängig davon, ob Sie den Cert-Manager oder ein alternatives Setup verwenden.

Kann ich DNS-01 anstelle von HTTP-01 verwenden?

Ja, cert-manager unterstützt die DNS-Validierung mit Anbietern wie Cloudflare, AWS und Google Cloud DNS. Verwenden Sie es, wenn Sie Port 80 nicht freigeben.

Ist cert-manager produktionsreif?

Unbedingt. Es ermöglicht SSL für große Kubernetes-Cluster in Unternehmen und öffentlichen Clouds.

Kann ich ein Wildcard-Zertifikat mit ACME in Kubernetes verwenden?

Ja, aber Wildcard-Zertifikate erfordern eine DNS-01-Validierung, bei der DNS-Einträge aktualisiert werden müssen, anstatt HTTP-Challenges zu verwenden. Vergewissern Sie sich, dass Ihr DNS-Anbieter die Automatisierung (über API) unterstützt, und konfigurieren Sie den dns01-Solver in Ihrer cert-manager-Einrichtung entsprechend.

Letzte Worte

Sie wissen jetzt, wie Sie ein ACME SSL-Zertifikat in Kubernetes mit cert-manager und einer ACME-kompatiblen Zertifizierungsstelle installieren. Diese Einrichtung ist vollständig automatisiert und für moderne Kubernetes-Umgebungen skalierbar. Sie erhalten sicheres HTTPS, automatische Erneuerung und nahtlose Integration mit Ingress, ohne Ihren Cluster verlassen zu müssen.

Sparen Sie 10% auf SSL-Zertifikate, wenn Sie noch heute bestellen!

Schnelle Ausstellung, starke Verschlüsselung, 99,99% Browser-Vertrauen, engagierter Support und 25-tägige Geld-zurück-Garantie. Gutscheincode: SAVE10

A detailed image of a dragon in flight
Geschrieben von

Erfahrener Content-Autor, spezialisiert auf SSL-Zertifikate. Verwandeln Sie komplexe Cybersicherheitsthemen in klare, ansprechende Inhalte. Tragen Sie durch wirkungsvolle Narrative zur Verbesserung der digitalen Sicherheit bei.