… porque ésto empieza a parecer un sindiós y así no se puede.
[toc]
Objetivos
- Usar el programa certbot ya que está empaquetado para Debian.
- Definir un archivo de configuración.
- Organizar los certificados en un sitio determinado:
- Elegir un directorio para los certificados.
- Determinar quiénes pueden acceder a ellos.
- Instalar un script que:
- Verifique los permisos de acceso.
- Reinicie servicios para que tengan en cuenta los cambios.
- Registre dichos cambios en la configuración si es necesario..
Usar el programa certbot
En la versión Jessie de Debian el programa se encuentra en el repositorio backports. En la nueva versión estable ya está en los respositorios normales.
En ambos casos su instalación arrastra un buen montón de paquetes Python pero no realiza cambios drásticos en el sistema.
Definir un archivo de configuración
El programa certbot puede emplear un archivo en formato .ini con el parámetro -c archivo
o --config archivo
, aunque también intenta localizarlo en los siguientes sitios:
/etc/letsencrypt/cli.ini
~/.config/letsencrypt/cli.ini
.
He guardado una plantilla con una configuración mínima, también para el servidor web Apache, en mi wiki.
Organizar los certificados
La organización viene dada por el propio programa. Todo lo guarda bajo el directorio /etc/letsencryt
de la siguiente forma:
/etc/letsencrypt# ls -1l total 32 drwx------ 4 root root 4096 ene 13 11:40 accounts drwxr-x--- 3 root ssl-cert 4096 ene 16 19:40 archive -rw-r--r-- 1 root root 767 abr 5 11:38 certbot.log -rw-r--r-- 1 root root 354 ene 13 11:32 cli.ini drwxr-xr-x 2 root root 4096 abr 7 12:22 csr drwx------ 2 root root 4096 abr 7 12:22 keys drwxr-x--- 3 root ssl-cert 4096 ene 16 19:40 live drwxr-xr-x 2 root root 4096 abr 7 12:22 renewal
y sólo tenemos que permitir el acceso a través de los mecanismos habituales del sistema. Para ello usamos el grupo ssl-cert
en los archivos que contienen certificados y claves y le asignamos las cuentas de usuario de los servicios que lo necesiten.
La mayor parte de esos programas funcionan como root
por lo que sólo tendremos que aplicarlo en algunos casos muy específicos: el servidor prosody
y poco más.
Script para completar el proceso de renovación
He creado uno dentro de un pequeño proyecto que mantengo con este tipo de herramientas y que puede verse aquí. No hace gran cosa y debe llamarse en las siguientes condiciones:
- Los certificados se hayan renovado o creado por completo (y no de uno en uno).
- No queramos detener el servicio durante la renovación.
El programa necesita una configuración mínima por si es necesario instalarlo en sistemas con otra disposición. Lee, si existe, el archivo /etc/letsencrypt.conf
que tiene lo siguiente como predeterminado:
# Directorio raíz de los certificados TARGET=/etc/letsencrypt/live # Grupo y máscara de archivos y directorios GROUP=ssl-cert DIRMODE=0750 MODE=0640 # Servicios a comprobar y reiniciar SERVICES="qpsmtpd exim4 prosody apache2 dovecot" # Parámetros para recibir los certificados desde # el sistema que los genera (opcional) SOURCE=/tmp/letsencrypt FILES="fullchaim.pem prìvkey.pem chain.pem cert.pem cert.csr"