Ya hemos hablado de la posibilidad de utilizar los certificados gratuitos de Let's Encrypt para implementar la seguridad SSL de nuestro servidor web. El cliente recomendado (Certbot) automatiza todo el proceso de obtención y renovación de certificados.
Si llevamos un tiempo utilizando certbot, podemos encontrarnos con el siguiente mensaje de error al solicitar un cetificado nuevo:
Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA
Esto se debe a que las versiones antiguas utilizan un método para validar la propiedad del dominio, en el que se han detectado fallos de seguridad. Let's Encrypt ha deshabilitado este tipo de validación y aunque las renovaciones no se ven afectadas, dependiendo del hosting que hayamos contratado para nuestro dominio, podemos vernos imposibilitados de obtener un certificado nuevo.
La solución es muy sencilla, tenemos que actualizar Certbot a la versión 0.21.0, que corrige este problema. Lo habitual es que los gestores de paquete de nuestro sistema operativo (ej apt-get en Ubuntu) se encarguen de este proceso, pero puede darse el caso de que los repositorios oficiales no estén actualizados. Si esto sucede, debemos realizar el proceso por nuestros medios.
Mantener actualizada la seguridad SSL con certbot-auto
Por suerte para nosotros, Let's Encrypt ha desarrollado un script específico certbot-auto, que se encargará de todo el proceso por nosotros. Los pasos a seguir son sencillos: descargamos el script, le asignamos derechos de ejecución y lo lanzamos con privilegios de root.
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-auto
sudo ./certbot-auto
Certbot-auto tiene las mismas opciones y funcionalidades que certbot, la diferencia es que en caso necesario instalará automáticamente la última versión disponible, con lo que nuestro problema quedará solucionado y podemos seguir obteniendo e instalando nuevos certificados. Podemos ver las opciones disponibles con
./certbot-auto --help all
Si tenemos menos de 512MB de RAM en nuestro servidor, necesitaremos crear un archivo de swap temporal para compilar las dependencias internas de certbot
sudo fallocate -l 1G /tmp/swapfile
sudo chmod 600 /tmp/swapfile
sudo mkswap /tmp/swapfile
sudo swapon /tmp/swapfile
Una vez terminado el proceso eliminamos el archivo temporal
sudo swapoff /tmp/swapfile
sudo rm /tmp/swapfile
Con estos sencillos pasos mantendremos nuestro cerbot actualizado y la seguridad ssl de nuestro servidor al día.