Debian 11, certbot, gandi.net y certificados comodín

Pues sí, parece que lo he conseguido al final. Y menos mal. Menudo alivio.

Años después de que el proyecto Let’s Encrypt permitiese el uso de certificados comodín al fin he conseguido que funcione en Debian 11 con gandi.net como registrador y servidor de DNS de mis dominios.

Hay cosas que arreglar antes pero lo esencial, conseguir los certificados mínimos para todo tipo de subdominios, está en marcha. Este blog es una prueba de ello aunque el único subdominio sea la galería de fotos funcionando (cuando quiere) con Piwigo.

El proceso sigue siendo complejo para mí porque certbot, el programa que gestiona certificados, ha evolucionado mucho y tiene opciones que nunca he empleado. Tantas que se hace difícil de verdad entender el proceso a menos que te dediques en exclusiva a ello. En mi caso sólo pretendo crear certificados, usarlos y que se renueven automáticamente.

En el sistema hay que tener disponible lo siguiente:

  1. Clave del API de Gandi, con los DNS del dominio empleando su sistema LiveDNS.
  2. Instalado el paquete certbot. La versión de Debian 11 como mínimo. La de Debian 10 es demasiado antigua. Por eso he tenido que emplear el servidor de esferas.org y no el de taquiones.net.
  3. Instalado el complemento de autentificación de certbot para gandi.net: python3-certbot-plugin-gandi.

Para emplearlo correctamente la documentación es de lo más confusa. El principal problema es que el programa certbot no permite configurar complementos desde archivos. Al menos por ahora, que parece que están replanteándose varias cosas del desarrollo y no acepta nuevas incorporaciones. Es por eso que hay que utilizarlo en parte desde los parámetros en la llamada.

Así que lo único que hay que tocar, aparentemente, el archivo /etc/letsencrypt/cli.ini es el tipo de autentificación:

# Definición de mecanismo de autentificación anterior (ahora comentado:
#webroot
#webroot-path = /var/www/letsencrypt

La clave del API sí que es posible indicarla desde un archivo. Se crea uno -por ejemplo- en la ruta /etc/letsencrypt/gandi.ini con el contenido:

# Clave API de gandi.net
dns_api_key=XXXXXXXXXXXXXX

Y ahora comprobamos que el complemento esté correctamente instalado:

root@esferas:/etc/letsencrypt# certbot plugins
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* dns
Description: Obtain certificates using a DNS TXT record (if you are using Gandi
for DNS).
Interfaces: IAuthenticator, IPlugin
Entry point: dns = certbot_plugin_gandi.main:Authenticator

* standalone
Description: Spin up a temporary webserver
Interfaces: IAuthenticator, IPlugin
Entry point: standalone = certbot._internal.plugins.standalone:Authenticator

* webroot
Description: Place files in webroot directory
Interfaces: IAuthenticator, IPlugin
Entry point: webroot = certbot._internal.plugins.webroot:Authenticator
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
root@esferas:/etc/letsencrypt# 

Si todo va bien solicitamos la creación del primer certificado con la siguiente línea de órdenes:

certbot certonly -a dns --dns-credentials /etc/letsencrypt/gandi.ini -d taquiones.net -d \*.taquiones.net

Y él solito hace todo el trabajo. Si la clave funciona correctamente y todos los servicios de Let’s Encrypt están en activo tendremos la salida habitual del proceso indicándonos dónde están los certificados.

Enlaces y referencias