El únic programa con el que vale la pena interactuar con la API ACME
de Let's Encrypt es
acme-client de OpenBSD. Me
resulta muchísimo mas faćil de gestionar ya a diferencia de
certbot
o similares, este usa un archivo de configuración para
poner todos los dominios para los que quieras generar un
certificado. Está escrito en C1) y al parecer solo está disponible en
OpenBSD. Intentaré compilarlo para FreeBSD también. Pero vamos, que
acme-client solo esté disponible en OpenBSD solo es una razón para
poner OpenBSD en tu máquina que da a internet :3
Necesitarás un dominio y una autoridad para usar, la autoridad en
nuestro caso es Let's Encrypt. Hay un ejemplo de archivo de
configuración en /etc/examples/acme-client.conf
:
# # $OpenBSD: acme-client.conf,v 1.5 2023/05/10 07:34:57 tb Exp $ # authority letsencrypt { api url "https://acme-v02.api.letsencrypt.org/directory" account key "/etc/acme/letsencrypt-privkey.pem" } authority letsencrypt-staging { api url "https://acme-staging-v02.api.letsencrypt.org/directory" account key "/etc/acme/letsencrypt-staging-privkey.pem" } domain example.com { alternative names { secure.example.com } domain key "/etc/ssl/private/example.com.key" domain full chain certificate "/etc/ssl/example.com.fullchain.pem" # Test with the staging server to avoid aggressive rate-limiting. #sign with letsencrypt-staging sign with letsencrypt }
Podemos copiarla a /etc/acme-client.conf
. Os he señalado las
líneas a cambiar.
Por ejemplo, aquí un archivo real:
# # $OpenBSD: acme-client.conf,v 1.5 2023/05/10 07:34:57 tb Exp $ # authority letsencrypt { api url "https://acme-v02.api.letsencrypt.org/directory" account key "/etc/acme/letsencrypt-privkey.pem" } authority letsencrypt-staging { api url "https://acme-staging-v02.api.letsencrypt.org/directory" account key "/etc/acme/letsencrypt-staging-privkey.pem" } domain mi.suragu.net { alternative names { "ss.suragu.net", "corsa.suragu.net", "booru.suragu.net", "wiki.suragu.net", "git.suragu.net" } domain key "/etc/ssl/private/suragu.net.key" domain full chain certificate "/etc/ssl/suragu.net.crt" # Test with the staging server to avoid aggressive rate-limiting. # sign with letsencrypt-staging sign with letsencrypt }
Podemos quitar el comentario de letsencrypt-staging para probar que todo funciona.
Para generar los certificados usamos el comando acme-client
<dominio>
y se generaran en el directorio que los hemos
específicado. Por ejemplo: acme-client mi.suragu.net