Certbot standalone auto-renewal #77

Merged
Numerica merged 4 commits from feat-cert-auto-renewal into issue42 2025-12-16 20:48:59 +00:00
Owner

closes #11
tiene mergeado #76

closes #11 tiene mergeado #76
Numerica added 5 commits 2025-11-26 01:07:15 +00:00
debido a que para este hay que arreglar la obtencion de certificados de DNS externos,
es necesario en HTTP (80) pasar la variable  a proxy_ssl_name ya que  viene vacia y esto
genera el error 500 responde tlsv1 unrecognized name (alert 112)
Añade soporte completo para usar dominios FQDN externos (ejemplo.com,
kipu.latina.red, etc.) además de subdominios .abyaya.la.

Cambios principales:
- Generación automática de subdominio .abyaya.la como alias
- Detección automática de TLDs compuestos (.com.ar, .co.uk, etc.)
- Actualización DNS multi-zona en Knot
- Procesamiento de múltiples dominios por servicio
- Certificados SSL para todos los dominios + wildcards

La detección de tipo de dominio (FQDN vs subdominio) es completamente
automática basada en el sufijo .abyaya.la.

Ver FQDN_AUTHORITATIVE.md para documentación completa.
- Activada renovación automática cada 4 y 18 de mes
- Usa dns-standalone sin conflictos con dnsmasq (IPs diferentes)
- Documentación completa de arquitectura DNS y validación ACME
Numerica changed title from Certbot stamdalone auto-renewal to Certbot standalone auto-renewal 2025-11-26 01:12:13 +00:00
Numerica requested review from fauno 2025-11-27 13:27:40 +00:00
fauno changed target branch from master to customdnsfiles 2025-11-27 14:19:06 +00:00
fauno changed target branch from customdnsfiles to issue42 2025-11-27 14:19:34 +00:00
fauno requested changes 2025-11-27 14:23:58 +00:00
@ -0,0 +38,4 @@
kipu.latina.red IN A 5.161.236.18
*.kipu.latina.red IN A 5.161.236.18
_acme-challenge.kipu.latina.red IN CNAME abyaya.la.
_acme-challenge.kipu.latina.red IN NS _acme-challenge.abyaya.la.
Owner

esto es lo que decía que no hace falta dar de alta todos los fqdn en knot, porque estos 4 registros se pueden crear en su dns (salvo que no soporte wildcard)

esto es lo que decía que no hace falta dar de alta todos los fqdn en knot, porque estos 4 registros se pueden crear en su dns (salvo que no soporte wildcard)
Author
Owner

Es que no soportan wildcard, por ej el de Latina.red es Bind9, ¿no fue por eso levantamos Knsupdate de hecho el año pasado?
Lo que aqui estamos pensando hacer es que haya que delegarlos (registros NS) para utilizarlos, lo cual es bastante estándar en cada Hosting. Una vez delegados, como este que lo está, intentar obtener el standalone a través del mismo proxy del certbot.
Si los certificados los tenemos que tener nosotrxs, ¿como haríamos esta conexión entre el certbot y el NS externo si no?

Es que no soportan wildcard, por ej el de Latina.red es Bind9, ¿no fue por eso levantamos Knsupdate de hecho el año pasado? Lo que aqui estamos pensando hacer es que haya que delegarlos (registros NS) para utilizarlos, lo cual es bastante estándar en cada Hosting. Una vez delegados, como este que lo está, intentar obtener el standalone a través del mismo proxy del certbot. Si los certificados los tenemos que tener nosotrxs, ¿como haríamos esta conexión entre el certbot y el NS externo si no?
Owner

mmm pensemos esto, a ver.

lo que estamos haciendo con *.HUERTA.abyaya.la es dar de alta en un dns dinamico porque no podemos tener ..abyaya.la. de hecho estoy pensando que nos podiamos evitar todo esto con un servidor dns que hice que sí lo permite hacer. quedará para otro momento.

si yo tengo huerta.sutty.coop.ar y lo quiero dar de alta en el proxy, en mi dns creo estos registros:

$ORIGIN sutty.coop.ar.
*.huerta CNAME huerta-sutty.abyayaya.la.

si mi servidor dns no soporta wildcards, tendré que dar de alta todos los subdominios que necesite.

si en cambio vamos por la delegación a los nameservers de la red (ahora gestionados por sutty):

$ORIGIN sutty.coop.ar.
huerta NS huerta-sutty.abyaya.la.

y el resto se gestiona por knsupdate. pero sutty tiene que dar de alta la delegación en sus knot, que no es lo que pasó (porque no me pediste).

mmm pensemos esto, a ver. lo que estamos haciendo con *.HUERTA.abyaya.la es dar de alta en un dns dinamico porque no podemos tener *.*.abyaya.la. de hecho estoy pensando que nos podiamos evitar todo esto con un servidor dns que hice que sí lo permite hacer. quedará para otro momento. si yo tengo huerta.sutty.coop.ar y lo quiero dar de alta en el proxy, en mi dns creo estos registros: ```zonefile $ORIGIN sutty.coop.ar. *.huerta CNAME huerta-sutty.abyayaya.la. ``` si mi servidor dns no soporta wildcards, tendré que dar de alta todos los subdominios que necesite. si en cambio vamos por la delegación a los nameservers de la red (ahora gestionados por sutty): ```zonefile $ORIGIN sutty.coop.ar. huerta NS huerta-sutty.abyaya.la. ``` y el resto se gestiona por knsupdate. pero sutty tiene que dar de alta la delegación en sus knot, que no es lo que pasó (porque no me pediste).
Owner

y para que certbot funcione, tendría que crear este registro

$ORIGIN sutty.coop.ar.
_acme-challenge NS _acme-challenge.abyaya.la.
y para que certbot funcione, tendría que crear este registro ``` $ORIGIN sutty.coop.ar. _acme-challenge NS _acme-challenge.abyaya.la. ```
Author
Owner

Este último registro está, en el Knsupdate de más arriba
La delegación NS no, porque esa si va en el Registrar

Este último registro está, en el _Knsupdate_ de más arriba La delegación NS no, porque esa si va en el Registrar
@ -0,0 +57,4 @@
-v abyayala_certs_data:/etc/letsencrypt \
--network host \
numericalatina/certbot-wildcard \
certonly --dns-standalone-address=5.161.236.18 --dns-standalone-port=53 \
Owner

está usando la ip del proxy real? sino estas hardcodeando el de producción

está usando la ip del proxy real? sino estas hardcodeando el de producción
Author
Owner

Sip esto está mal hardcodeado

Sip esto está mal hardcodeado
Numerica marked this conversation as resolved
@ -41,0 +36,4 @@
day: 4,18
hour: 0
minute: 0
job: "docker run --rm -v {{ althost }}_certs_data:/etc/letsencrypt --network host {{ CERTBOT_image }} renew --dns-standalone-address={{ host_ip }} --dns-standalone-port=53 >> /var/log/renewal.log 2>&1"
Owner

ah ok no está hardcodeada

ah ok no está hardcodeada
Owner

por que los logs van a un archivo separado en vez del journal?

por que los logs van a un archivo separado en vez del journal?
Author
Owner

Esto está copiado de Numérica. Hay que adaptarlo a lo que resuelva este issue #45

Esto está copiado de Numérica. Hay que adaptarlo a lo que resuelva este issue #45
Owner

por ahora sacale el >> /var/log y agregale --log-driver=journald

por ahora sacale el `>> /var/log` y agregale `--log-driver=journald`
Numerica marked this conversation as resolved
Numerica added 1 commit 2025-12-02 20:37:42 +00:00
Author
Owner

Aqui hay que decidir si queremos usar CNAME o NS para la delegación.
Creo que con NS se puede automatizar los demas registros, y en el primer caso son mas las configuraciones que hay que hacer por fuera.
Asi que preferiria NS

Aqui hay que decidir si queremos usar CNAME o NS para la delegación. Creo que con NS se puede automatizar los demas registros, y en el primer caso son mas las configuraciones que hay que hacer por fuera. Asi que preferiria NS
Numerica added 2 commits 2025-12-16 15:03:07 +00:00
Numerica merged commit ea1e264fd4 into issue42 2025-12-16 20:48:59 +00:00
Sign in to join this conversation.
No description provided.