Certificado Let’s Encrypt en Ubuntu con Apache u otro servidor web
Si tenemos un servidor con Ubuntu (u otra distribución) y hemos instalado Apache y demás programas necesarios para correr páginas webs, llegará el momento de que estas páginas web corran bajo protocolo seguro, es decir https.
Una de las mejores opciones, si no la mejor, es instalar un certificado Let’s Encrypt que además es gratis.
Para instalar el certificado SSL por la línea de comandos (en la terminal) solo necesitamos acceso root por ssh para instalar el cliente ACME que se llama Certbot que se encarga de automatizar la emisión e instalación de certificados con cero tiempo de inactividad, según nos informa Let’s Encrypt.
Instalar Certbot
El primer paso es la instalación de Certbot que será el encargado de hacerlo todo. Este puede instalarse de diversas formas pero recomiendan que se instale mediante snapd que suele venir instalado ya en los nuevos sistemas.
En el caso de que no lo tengamos instalado procederemos de la siguiente manera:
sudo apt update
sudo apt install snapd
y para comprobar que está correctamente instalado y funcionando instalaremos el paquete hello-world:
sudo snap install hello-world
y lo ejecutamos:
hello-world
devolviéndonos, como es de esperar:
Hello World!
Por último, antes de instalar Certbot tenemos que asegurarnos que no esté instalado previamente de cualquier otra manera.
sudo apt-get remove certbot
Instalamos, por fin, Certbot:
sudo snap install --classic certbot
y creamos un enlace simbólico:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Instalar certificado SSL de Let’s Encrypt
Procedemos a instalar, de forma automática el o los certificados SSL de una o de todas las webs que tenemos en el servidor Apache:
sudo certbot --apache
A partir de este punto el o los certificados SSL se renovarán automáticamente sin necesidad de volver a interactuar con Certbot ya que se configura como un cron del sistema.
Si queremos comprobar el funcionamiento de la renovación de los certificados seguros podemos escribir en la terminal lo siguiente:
sudo certbot renew --dry-run
devolviendo un resultado similar a este:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/midominio.com.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Account registered.
Simulating renewal of an existing certificate for midominio.com and www.midominio.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/midominio.com/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -