Redes y Sistemas

Configurar certificados SSL gratis en Ubuntu con Apache

En este artículo te mostraré cómo configurar un certificado TLS/SSL de Let’s Encrypt (son gratuitos y válidos) en un servidor web Apache sobre un servidor Ubuntu 16.04. También te mostraré como automatizar la renovación de este certificado mediante tareas de cron, ya que caducan a los 90 días.

Publicado el 13 de Octubre de 2016
Compartir

En este artículo te mostraré cómo configurar un certificado TLS/SSL de Let’s Encrypt (son gratuitos y válidos) en un servidor web Apache sobre un servidor Ubuntu 16.04. También te mostraré cómo automatizar la renovación de este certificado mediante tareas de cron , ya que caducan a los 90 días.

Los certificados SSL son usados por los servidores web para encriptar el tráfico entre el servidor y el cliente, añadiendo una capa más de seguridad para los usuarios que usan tu aplicación. Let’s Encrypt nos proporciona una manera sencilla de obtener e instalar certificados válidos y acreditados gratuitamente.

Imagen 0 en Configurar certificados SSL gratis en Ubuntu con Apache

Prerequisitos

Para que puedas seguir este tutorial de forma adecuada, necesitarás:

  • Un servidor con Ubuntu 16.04 y un usuarios no-root con permisos de sudo.
  • Disponer de Apache instalado en el servidor con uno o más dominios configurados adecuadamente.

Si cumples estos requisitos, ahora debes entrar al servidor con tu usuario no-root (el que tiene permisos de sudo).

Paso 1: Descargar el cliente de Let’s Encrypt

Primero, vamos a descargar el cliente certbot-auto de Let’s Encrypt desde Eff.org . El cliente automáticamente instalará las actualizaciones si son necesarias después de la instalación.

Para descargar el cliente certbot-auto vamos a /usr/local/sbin y lo descargamos:

$ cd /usr/local/sbin
$ sudo wget https://dl.eff.org/certbot-auto

Ahora tendremos una copia de certbot-auto en la carpeta /usr/local/sbin . Debemos hacer ejecutable el script con el siguiente comando:

$ sudo chmod a+x /usr/local/sbin/certbot-auto

Ahora ya tenemos el cliente certbot-auto listo para ser usado.

Paso 2: Configurar el certificado SSL

Generar el certificado SSL para Apache usando certbot-auto es bastante sencillo. El cliente obtendrá automáticamente e instalará el nuevo certificado SSL válido y gratuito para los dominios que pasemos como parámetros.

Para ejecutar la instalación interactiva del certificado y obtenerlo para un solo dominio, ejecutaremos el comando certbot-auto de la siguiente forma:

$ certbot-auto --apache -d example.com

Si quieres instalar un certificado que sea válido para varios dominios o subdominios puedes pasar parámetros adicionales al comando. El primer nombre de dominio en la lista de parámetros será el dominio base usado por Let’s Encrypt para crear el certificado, por esto te recomiendo que siempre pongas tu dominio de primer nivel al principio de la lista, seguido de los subdominios o alias que dispongas.

Puedes ver en esté ejemplo como securizar example.com y el subdominio www.example.com :

$ certbot-auto --apache -d example.com -d www.example.com

Tras ejecutar el comando , se instalarán las dependencias, y luego seguirás el paso a paso para personalizar las opciones del certificado. Se te pedirá un email para recuperar tu clave y para recibir los avisos. También se te dará la opción de habilitar http y https juntos o forzar la redirección de todas las peticiones a https (recomendado).

Cuando la instalación finalice, podrás encontrar los archivos del certificado generado en /etc/letsencrypt/live . Puedes verificar el estado de tu certificado SSL desde el siguiente enlace.

Ahora ya podrás acceder a tu sitio web usando https .

[BANNER_SUSCRIPCION]

Paso 3: Configuración de la autorenovación

Como te he comentado anteriormente, los certificados de Let’s Encrypt son válidos por 90 días, pero es recomendado que realices la renovación cada 60 días para tener 30 días de margen de error. El cliente certbot-auto dispone de un comando renew que comprobará los certificados instalados actualmente y los renovará si están a menos de 30 días de la fecha de espiración.

Para ejecutar el proceso de renovación basta con ejecutar:

$ certbot-auto renew

Si lo ejecutas ahora que acabamos de instalar los certificados, sólo veras un mensaje informativo indicándote la fecha de espiración y que no es apto para ser renovado aún:

Checking for new versión...
Requesting root privileges to run letsencrypt...
   /home/sammy/.local/share/letsencrypt/bin/letsencrypt renew
Processing /etc/letsencrypt/renewal/example.com.conf

The following certs are not due for renewal yet:
  /etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.

Si has creado un certificado para varios dominios o subdominios, sólo verás la información del dominio base , pero la renovación será válida para todos los subdominios y dominios incluidos en ese certificado.

Un forma práctica para asegurarte de que los certificados no expiran es crear una tarea en el cron que periódicamente ejecute el comando renew por ti. Como el comando renew comprueba la fecha de espiración y sólo lo ejecuta si esta está a menos de 30 días de sus espiración, es seguro programar una tarea que se ejecute cada día o cada semana.

Vamos a crear la tarea, en este caso se ejecutará cada semana. Para editar el crontab del usuario root ejecutamos:

$ sudo crontab -e

Ahora incluye el siguiente contenido en el crontab, todo en una línea:

30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log

Guarda el fichero y cierra. Esto creará una nueva tarea en el cron que ejecutará el comando certbot-auto renew cada lunes a las 2:30 de la madrugada. La salida producida por el comando irá al fichero de log : /var/log/le-renew.log .

Conclusión

Hemos visto como instalar un certificado SSL gratis de Let’s Encrypt para securizar nuestros sitios que corran bajo un servidor web Apache. Te recomiendo que eches un vistazo al blog oficial de Let’s Encrypt para estar al tanto de actualizaciones importantes.

Si te interesa saber más sobre servidores web, no puedes perderte el curso de Servidores Web que disponemos en nuestra academia. Puedes suscribirte ya y acceder a todo el contenido desde el primer momento.


Compartir este post

También te puede interesar...

Linux desde Cero

Curso para aprender Linux desde cero

7 horas y 3 minutos · Curso

Un curso de Linux para aprender todo lo necesario para administrar sistemas Linux, perfecto para programadores y administradores de sistemas.

  • Sistemas Operativos
Tecnología

Seguridad en Apache: modSecurity

18 Septiembre 2013 Antonio Domínguez Crespo
Servidores Web

Curso de Servidores Web

11 horas y 54 minutos · Curso

Aprende Nginx, Apache, instalación del Stack MEAN, LAMP y mucho más

  • Servidores Web
Artículos
Ver todos