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 AutoDNS, så att cert-manager 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 AutoDNS

Se till att varje domän du beställer certifikat för har en CNAME-post för _dnsauth.<domän> till FairSSLs DNS-server i AutoDNS-menyn. Engångsuppsättning per domän. Även om vi använder HTTP-01-metoden i Kubernetes ser AutoDNS 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å vilken valideringsmetod du väljer, och du har två alternativ. Med HTTP-01 (via en Ingress) behöver du öppna port 80 från internet till den Ingress-controller som serverar challenge-sökvägen. Med DNS-01 krävs ingen inkommande port: med FairSSL AutoDNS skapar du en permanent CNAME-post per domän, cert-manager placerar sin challenge och FairSSL svarar på den på vår sida, så inget behöver exponeras på port 80. För kluster där du helst inte vill öppna port 80 är DNS-01 med AutoDNS den rekommenderade vägen.
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, eller att AutoDNS 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.