bg-tutorials

Como instalar um certificado SSL da ACME no Kubernetes

A instalação de um certificado ACME SSL no Kubernetes agora é um processo padronizado e flexível, graças a ferramentas maduras como o cert-manager e ao amplo suporte de CAs comerciais. Se você estiver executando cargas de trabalho de produção por trás do NGINX Ingress, Traefik ou outro gateway, poderá automatizar o HTTPS seguro com controle total.

Instalar o ACME SSL no Kubernetes

Este guia mostrará a você como instalar um certificado ACME SSL no Kubernetes usando o cert-manager. Abordaremos a instalação, a configuração de um emissor com External Account Binding (EAB) e a emissão de certificados para proteger seus serviços de entrada.


O que você precisará

Antes de mergulhar, certifique-se de que você:

  • Você tem um cluster Kubernetes em funcionamento (recomenda-se a versão 1.23 ou superior)
  • kubectl está configurado e funcionando
  • Você tem acesso ao seu controlador de entrada (por exemplo, NGINX, Traefik)
  • Seu domínio aponta para o IP público do controlador de entrada
  • Você tem credenciais EAB de sua CA compatível com ACME:
    • URL do diretório ACME (por exemplo, https://acme.example.com/v2/DV)
    • Identificador de chave EAB (KID)
    • Chave HMAC do EAB

Observação: https://acme.example.com/v2/DV é usado em todo este guia como URL de diretório ACME de espaço reservado. Substitua-o pelo endpoint real de sua autoridade de certificação.


Etapa 1 – Instalar o cert-manager

cert-manager é o cliente ACME nativo do Kubernetes mais amplamente usado. Ele é executado como um controlador que gerencia a emissão e a renovação de certificados.

Instale via Helm (preferencialmente para produção):

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

Aguarde alguns segundos e confirme se todos os pods estão funcionando:

kubectl get pods -n cert-manager

Você deverá ver três pods: cert-manager, cert-manager-webhook e cert-manager-cainjector.


Etapa 2 – Criar um segredo do Kubernetes para as credenciais do EAB

Crie um segredo do Kubernetes para armazenar sua chave EAB com segurança:

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"

Substitua por suas credenciais reais. Evite copiar e colar espaços em branco.


Etapa 3 – Definir um ClusterIssuer ou Emissor

Agora, crie um recurso ClusterIssuer (para todos os namespaces) ou Issuer (namespace único) que conecte o cert-manager à ACME CA usando as credenciais do EAB.

Aqui está um exemplo de 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

Aplique-o:

kubectl apply -f clusterissuer.yaml

Substitua ingress.class: nginx por traefik, nginx-internal ou qualquer outra classe de ingress que você tenha. Você pode encontrar isso na documentação do seu controlador ingress.


Etapa 4 – Criar um recurso de certificado

Quando o ClusterIssuer estiver pronto, crie um recurso de certificado que informe ao cert-manager qual domínio você deve proteger. Veja um exemplo:

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

Aplique-o:

kubectl apply -f certificate.yaml

O cert-manager usará o emissor, resolverá o desafio via ingress e armazenará o certificado emitido como um segredo TLS do Kubernetes.


Etapa 5 – Faça referência ao certificado em seu Ingress

Atualize sua regra de entrada para usar o certificado gerado:

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

Aplique-o:

kubectl apply -f ingress.yaml

Quando o cert-manager detectar a anotação, ele começará a resolver o desafio ACME e emitirá o seu certificado.


Etapa 6 – Verificar o certificado e a renovação automática

Para verificar se tudo funcionou:

kubectl describe certificate my-ssl-cert

Procure o certificado emitido com sucesso.

Para verificar a configuração de renovação, execute:

kubectl get certificaterequests

O cert-manager lida com a renovação automaticamente cerca de 30 dias antes da expiração. Você pode simular uma renovação como esta:

kubectl cert-manager renew my-ssl-cert


Perguntas comuns

A configuração do ACME SSL no Kubernetes pode parecer um pouco abstrata, especialmente quando você faz malabarismos com controladores de entrada, segredos e registros DNS. Abaixo, respondemos a algumas perguntas comuns que os desenvolvedores enfrentam ao instalar certificados ACME em um ambiente Kubernetes, quer você esteja usando o cert-manager ou uma configuração alternativa.

Posso usar o DNS-01 em vez do HTTP-01?

Sim, o cert-manager oferece suporte à validação de DNS com provedores como Cloudflare, AWS e Google Cloud DNS. Use-o se você não expuser a porta 80.

O cert-manager está pronto para produção?

Com certeza. Ele potencializa o SSL para grandes clusters do Kubernetes em empresas e nuvens públicas.

Posso usar um certificado curinga com o ACME no Kubernetes?

Sim, mas os certificados curinga exigem a validação DNS-01, que envolve a atualização de registros DNS em vez de usar desafios HTTP. Confirme se o seu provedor de DNS oferece suporte à automação (via API) e configure o solucionador dns01 de acordo com a configuração do cert-manager.

Palavras finais

Agora você sabe como instalar um certificado ACME SSL no Kubernetes usando o cert-manager e uma autoridade de certificação compatível com o ACME. Essa configuração é totalmente automatizada e dimensionável para ambientes modernos do Kubernetes. Você obtém HTTPS seguro, renovação automática e integração perfeita com o Ingress, tudo isso sem sair do cluster.

Economize 10% em certificados SSL ao fazer seu pedido hoje!

Emissão rápida, criptografia forte, 99,99% de confiança no navegador, suporte dedicado e garantia de reembolso de 25 dias. Código do cupom: SAVE10

Uma imagem detalhada de um dragão em voo
Escrito por

Redator de conteúdo experiente, especializado em certificados SSL. Transformação de tópicos complexos de segurança cibernética em conteúdo claro e envolvente. Contribua para melhorar a segurança digital por meio de narrativas impactantes.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.