Cloudflare DNS + TLS
Configuración de DNS y certificados SSL
Overview
Cloudflare gestiona el DNS para todos los dominios *.illanes00.cl y proporciona certificados SSL via DNS-01 challenge.
Configuración DNS-01
Caddy usa la API de Cloudflare para obtener certificados automáticamente sin necesidad de exponer el puerto 80.
Token de API
Ubicación: ~/.cloudflare/token o variable CLOUDFLARE_API_TOKEN
Permisos requeridos: - Zone:DNS:Edit (para el dominio illanes00.cl)
En Caddy
El snippet global de TLS está en /etc/caddy/Caddyfile:
{
acme_dns cloudflare {
api_token {env.CLOUDFLARE_API_TOKEN}
}
}
Cada vhost usa:
mi-proyecto.illanes00.cl {
import tls_cf
reverse_proxy localhost:8105
}
Verificar Certificados
# Ver detalles del certificado
curl -vI https://proyecto.illanes00.cl 2>&1 | grep -E "subject|expire|issuer"
# Ver certificado completo
openssl s_client -connect proyecto.illanes00.cl:443 -servername proyecto.illanes00.cl </dev/null 2>/dev/null | openssl x509 -text
# Ver fecha de expiración
echo | openssl s_client -connect proyecto.illanes00.cl:443 -servername proyecto.illanes00.cl 2>/dev/null | openssl x509 -noout -datesRenovación
Los certificados se renuevan automáticamente por Caddy (30 días antes de expirar).
Para forzar renovación:
# Eliminar certificado actual
sudo rm /var/lib/caddy/.local/share/caddy/certificates/acme-v02.api.letsencrypt.org-directory/proyecto.illanes00.cl/
# Recargar Caddy
sudo systemctl reload caddyTroubleshooting
Error “DNS problem: SERVFAIL”
El token de Cloudflare no tiene permisos correctos o expiró.
# Verificar token
curl -X GET "https://api.cloudflare.com/client/v4/zones" \
-H "Authorization: Bearer $(cat ~/.cloudflare/token)" \
-H "Content-Type: application/json"Error “rate limited”
Let’s Encrypt tiene límites. Esperar 1 hora o usar staging:
{
acme_ca https://acme-staging-v02.api.letsencrypt.org/directory
}