CA interna con Step-CA y ACME: HTTPS automático en todo el lab

Certificados válidos para cada nodo y servicio, renovación automática

El problema de los self-signed

Cada servicio con certificado self-signed es un warning en el browser, una excepción en curl y una configuración que tarde o temprano alguien saltea por comodidad.

La solución es una CA interna que emita certificados válidos para dominios internos, con renovación automática via ACME — mismo protocolo que Let’s Encrypt.

Figura 5 — Flujo ACME: los servicios solicitan certificados a step-ca via DNS-01 challenge sobre PowerDNS

Step-CA: una CA interna en 10 minutos

  1. Instalar step y step-ca desde binarios de GitHub Releases en VM Debian 12 (ca01 · 10.0.0.40)
  2. Inicializar: step ca init –name=’Lab Internal CA’ –dns=’ca01.lab.internal’ –address=’:443′ –provisioner=’acme’
  3. Configurar ACME provisioner para aceptar peticiones de *.lab.internal
  4. Instalar como servicio systemd con usuario sin privilegios

💡 Tip:  Distribuí el root CA certificate a todos los nodos: update-ca-certificates en cada host Debian. Sin este paso los certificados emitidos siguen siendo ‘no confiables’ para el OS y los browsers.

acme.sh con dns_pdns plugin

El plugin dns_pdns permite challenge DNS via PowerDNS API — esto habilita wildcards (*.lab.internal) sin que los servicios sean accesibles desde internet.

  • Instalar acme.sh: curl https://get.acme.sh | sh
  • Configurar env: PDNS_Url=http://10.0.0.31:8081, PDNS_ServerId=localhost, PDNS_Token=TU_API_KEY
  • Registrar con step-ca: acme.sh –register-account –server https://ca01.lab.internal/acme/acme/directory
  • Emitir certificado: acme.sh –issue –dns dns_pdns -d nodo1.lab.internal –server …
  • Instalar en cada servicio con –reloadcmd para reiniciar el servicio automáticamente

Servicios cubiertos

  • https://nodo1.lab.internal:8006 — UI Proxmox VE
  • https://nodo2.lab.internal:8006 — UI Proxmox VE
  • https://nodo3.lab.internal:8006 — UI Proxmox VE
  • https://pbs01.lab.internal:8007 — Proxmox Backup Server
  • https://ipam01.lab.internal — phpIPAM
  • https://pdns01.lab.internal — PowerDNS API

Renovación automática

acme.sh instala un cron diario que renueva certificados con menos de 30 días de vigencia. Con step-ca configurado a 90 días, la renovación es invisible para los operadores.

step-ca permite validez de 24hs para entornos con mayor postura de seguridad. El overhead operativo es el mismo — la renovación sigue siendo automática.


Comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *