====== Generar certificados con acme-client =======
El únic programa con el que vale la pena interactuar con la API ACME
de [[https://letsencrypt.org|Let's Encrypt]] es
[[https://man.openbsd.org/acme-client|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 C((https://github.com/openbsd/src/tree/master/usr.sbin/acme-client)) 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
==== Configuración básica ====
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
'' y se generaran en el directorio que los hemos
específicado. Por ejemplo: ''acme-client mi.suragu.net''