Categorías
Servidores

Cómo conseguir certificado SSL gratis con Let’s Encrypt (https)

Después de mucho tiempo sin escribir por aquí hoy os voy a explicar cómo conseguir certificado SSL gratis con Let’s Encrypt(https) en vuestras páginas webs servidas con Apache2.

Let’s Encrypt es una Autoridad de certificación(CA) que nos permite obtener de forma gratuita y fácil certificados SSL/TLS lo que nos permitiria tener https en nuestros servidores web.

En esta guía usaremos el cliente de Certbot que automatiza casi todos los pasos que hacen falta para tenerlo todo bien configurado.

Requsitios previos

  • Manejo básico con la línea de comandos
  • Una página web que ya esté online con el puerto 80 abierto
  • Acceso al servidor vía SSH
  • En esta guía estoy usando Ubuntu 18 pero las versiones anteriores son igual de validas

1. Instalar Certbot

Para poder obtener el certificado SSL gratis con Let’s Encrypt tenemos que instalar Certbot en nuestro servidor.

Como Certbot es un desarrollo muy activo muchas veces la versión que hay en los repositorios de Ubuntu está desactualizado por lo que usaremos el repositorio que mantienen los propios desarrolladores que tendrá la versión más reciente.

Añadimos el repositorio

sudo add-apt-repository ppa:certbot/certbot

Instalamos el cliente de Certbot para Apache2

sudo apt install python-certbot-apache

2. Configurar el certificado SSL

Para que Certbot pueda configurar correctamente el certificado SSL lo que hace es buscar el nombre de tu dominio que concuerde con el ServerName de las configuraciones disponibles de los virtualhosts de Apache2.

Por ejemplo:

sudo nano /etc/apache2/sites-available/codigodiario.me.conf
...
ServerName codigodiario.me;
...

3. Conseguir el certificado SSL

La versión que nos bajamos antes de Certbot para Apache2 se encargará de descargar todo, reconfigurar Apache2 y reiniciar el servicio.

sudo certbot --apache -d codigodiario.me -d www.codigodiario.me
  • –apache para correr la configuración para Apache2
  • -d el dominio que queremos certificar

Si es la primera vez que usas Certbot, te pedirá una dirección de email para avisar cuando quede poco para la renovación del certificado(Let’s Encrypt solo provee certificados con una duración de 90 días para evitar problemas si la llave se ve comprometida y animar la automatización de la renovación que veremos más adelante) y también tendrás que aceptar los términos.

Después certbot se comunicará con Let’s Encrypt para realizar algunas comprobaciones de que realmente eres el dueño del dominio a certificar solicitado.

Al terminar te preguntará si quieres mantener el http o quieres redireccionar todas las peticiones a un acceso seguro con https.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Al seleccionar una opción certbot reconfigurará o no Apache2 y te indicará donde ha guardado los certificados.

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/codigodiario.me/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/codigodiario.me/privkey.pem
   Your cert will expire on 2018-07-23. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:
   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Ya tienes todo descargado, instalado y configurado, si ahora visitas tu página web verás que ya no aparece como No seguro y que la url lleva https://. Todo listo!

4. Renovación automática del certificado(opcional)

Como he comentado antes, los certificados solo son válidos durante 90 días,  pero no hay que preocuparse porque certbot también se encarga de eso añadiendo un script de renovación en el cron de nuestro servidor que se ejecutará 2 veces al día en busca de ceritificados que vayan a caducar en menos de 30 días y los renovará.

Solo tenemos que ejecutar

sudo certbot renew --dry-run

Si se completa sin ningún error, ya está todo todito, tu certificado se renovará automaticamente cuando se tenga que renovar(cuando falten 30 días o menos para que expire).

Por Deniz M.

Desarrollador a tiempo completo, amante del buen rol y los juegos de plataforma. Mi tiempo libre me gusta invertirlo para ver series y malas peliculas