SSL-certifikatens maximala livslängd reduceras till 200 dagar från mars 2026. Läs mer →

Kubernetes: cert-manager med FairSSL ACME

cert-manager är den inbyggda ACME-klienten för Kubernetes. Den körs som en controller i klustret, skapar TLS Secrets automatiskt och håller certifikaten förnyade via ARI. Med FairSSL som ACME-utfärdare använder vi External Account Binding (EAB) och Auto DNS, så att solvern inte behöver DNS API-nycklar.

Uppsättning

Guiden förutsätter att du redan har cert-manager installerat i klustret (Helm chart eller statiskt manifest). Om inte, följ cert-manager-installationen först. Använd v1.18 eller senare för ARI-stöd.

Steg 1: Skapa EAB-secret

Hämta EAB KID och HMAC-nyckeln från ACME-fliken i din FairSSL-kontrollpanel och skapa en Kubernetes Secret i cert-manager-namespacet.

kubectl create secret generic fairssl-eab-secret \
  --namespace cert-manager \
  --from-literal=secret=DIN_EAB_HMAC

Steg 2: Skapa ClusterIssuer

ClusterIssuer är tillgänglig från alla namespaces. Spara som fairssl-issuer.yaml och apply.

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: fairssl-acme-issuer
spec:
  acme:
    email: acme-client@fairssl.dk
    server: https://fairssl.dk/acme
    privateKeySecretRef:
      name: fairssl-acme-account-key
    externalAccountBinding:
      keyID: DIN_EAB_KID
      keySecretRef:
        name: fairssl-eab-secret
        key: secret
    solvers:
    - http01:
        ingress:
          ingressClassName: nginx
kubectl apply -f fairssl-issuer.yaml

Steg 3: Konfigurera FairSSL Auto DNS

Se till att varje domän du beställer certifikat för har en CNAME-post för _acme-challenge.<domän> till FairSSLs DNS-server i Auto DNS-menyn. Engångsuppsättning per domän. Även om vi använder HTTP-01-solvern i Kubernetes ser Auto DNS till att förnyelsen fungerar utan manuellt ingripande om Ingress-sökvägen tillfälligt skulle vara oåtkomlig.

Steg 4: Beställ ett certifikat

Skapa ett Certificate-objekt som refererar till ClusterIssuer. cert-manager skapar automatiskt en TLS Secret med namnet i secretName, som dina Deployments och Ingresses kan använda.

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: www-exempel-se
  namespace: default
spec:
  secretName: www-exempel-se-tls
  issuerRef:
    name: fairssl-acme-issuer
    kind: ClusterIssuer
  commonName: www.exempel.se
  dnsNames:
  - www.exempel.se
  - exempel.se

Steg 5: Verifiera och felsök

kubectl describe clusterissuer fairssl-acme-issuer
kubectl get certificate www-exempel-se -n default
kubectl describe certificate www-exempel-se -n default
kubectl get challenges -A

När status visar Ready: True innehåller www-exempel-se-tls ditt certifikat och privata nyckel och är redo att monteras av din Deployment eller refereras av en Ingress. Du kan verifiera det publika certifikatet med FairSSLs SSL-skanner.

Vanliga frågor

Hitta svar på de vanligaste frågorna om SSL-certifikat och FairSSL.

cert-manager är en inbyggd Kubernetes-controller som körs som en pod i klustret. Den utfärdar TLS Secrets som vanliga Kubernetes-objekt, så Deployments, Services och Ingresses kan referera till certifikatet utan att veta något om ACME. Det är den rekommenderade lösningen för kluster och ersätter i princip alla ad hoc-lösningar med externa klienter som importerar PEM-filer.
Det beror på din solver. HTTP-01 (via en Ingress) kräver port 80 från internet till den Ingress-controller som serverar challenge-sökvägen. Ett alternativ är att använda DNS-01 med en leverantörsplugin, men i en FairSSL-uppsättning är Auto DNS mycket enklare: FairSSL svarar själv på DNS-01-utmaningar på vår sida via den permanenta CNAME-posten, så HTTP-01 via en Ingress räcker väl utan DNS-plugin.
Från cert-manager v1.18 stöds ACME Renewal Information (ARI) som standard. Det innebär att certifikatet förnyas när FairSSL rekommenderar det, i stället för enligt ett fast schema. Kör du en äldre version, uppgradera. ARI är särskilt viktigt för 47-dagars certifikat och för att få tidig förnyelse vid spärrningshändelser.
Ja, använd en ClusterIssuer (som vårt exempel) i stället för en namespace-bunden Issuer. ClusterIssuer är tillgänglig från alla namespaces i klustret.
I samma namespace som cert-manager (vanligen cert-manager). ClusterIssuer-objektet refererar secreten via keySecretRef.name. Om cert-manager inte hittar den, låt en cert-manager-admin verifiera placeringen med kubectl get secret -n cert-manager.
cert-manager skapar en Order som i sin tur skapar en Challenge. Kontrollera dem med kubectl describe certificate <namn> och kubectl get challenges -A. De vanligaste problemen är att ingress-controllern inte ruttar /.well-known/acme-challenge/ till cert-manager-solvern, eller att Auto DNS inte är korrekt konfigurerat för domänen.

Redo att automatisera certifikat i Kubernetes?

Skapa ett gratis konto och utfärda ditt första certifikat på under 10 minuter.