uacme con gandi.net

Huyendo un poco (o mucho) de la complejidad del programa certbot para la renovación de certificados me he decidido a probar uacme que permite la validación vía DNS para gandi.net.

Dado que no está empaquetado se sigue el procedimiento habitual con un respositorio git y se procede a instalar el software y el archivo con la clave del API de gandi.net, que es donde tengo los DNS del dominio.

$ git clone https://github.com/tdy91/uacme-gandi-hook.git
$ cd uacme-gandi-hook/
$ sudo install -m 0555 gandi_api_functions.inc gandi_nsupdate.sh /usr/share/uacme/
$ sudo cat > /root/gandi_api_key
XXXXXXXXXXXXXXX
EOF
$ sudo chmod 0600 /root/gandi_api_key

El archivo con la clave del API de gandi se instala en el directorio raíz del superusuario de manera predeterminada aunque puede cambiarse con la variable de entorno GANDI_API_KEY_FILE.

Una vez instalado comenzar con él es sencillo:

$ sudo install -d /etc/uacme/
$ sudo uacme -c /etc/uacme/ new webmaster@dominio
$ tree /etc/uacme/
/etc/uacme/
── private
   └── key.pem

Con eso tenemos creada la cuenta ACME asociada a esa dirección de correo y ahora vamos a instalar el complemento para emplear el mecanismo de DNS para los certificados.

 uacme -v -c /etc/uacme/ -h /usr/share/uacme/gandi_nsupdate.sh issue susanamerino.com \*.susanamerino.com 
uacme: version 1.7.1 starting on Wed, 14 Sep 2022 11:31:01 +0200
uacme: loading key from /etc/uacme//private/key.pem
uacme: loading key from /etc/uacme//private/susanamerino.com/key.pem
uacme: checking existence and expiration of /etc/uacme//susanamerino.com/cert.pem
uacme: /etc/uacme//susanamerino.com/cert.pem does not exist
uacme: generating certificate request
uacme: fetching directory at https://acme-v02.api.letsencrypt.org/directory
uacme: retrieving account at https://acme-v02.api.letsencrypt.org/acme/new-acct
uacme: account location: https://acme-v02.api.letsencrypt.org/acme/acct/731113527
uacme: creating new order at https://acme-v02.api.letsencrypt.org/acme/new-order
uacme: order location: https://acme-v02.api.letsencrypt.org/acme/order/731113527/125377996077
uacme: retrieving authorization at https://acme-v02.api.letsencrypt.org/acme/authz-v3/153227855347
uacme: running /usr/share/uacme/gandi_nsupdate.sh begin dns-01 susanamerino.com 7Y6us_HJ0jX6SSGWOl9thJn11XLJ00YDENWpfK-57J8 C_LhKw2qhJoCZUu24iejkuS9Vmn3RYtbyhz7fQ5BnMs
/usr/share/uacme/gandi_nsupdate.sh: 39: source: not found
/usr/share/uacme/gandi_nsupdate.sh: 106: acme_ns_put: not found
uacme: challenge dns-01 declined
uacme: no challenge completed
uacme: failed to authorize order at https://acme-v02.api.letsencrypt.org/acme/order/731113527/125377996077
root@esferas:~# 

Y como puede verse algún error he cometido porque el script gandi_nsupdate.sh no encuentra las funciones asociadas y muere miserablemente. Revisado el código, e incluso llamado el script directamente (con trazado de ejecución), el error no aparece. Es sólo cuando está integrado en el proceso de trabajo de uacme.

No termina de gustarme el montaje y debo estar cansado para acertar con el error. Y sí, certbot tiene lo que tiene, pero de momento funciona. Seguiré con él. Jo, qué rollo.