====== 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''