Cómo obtener certificados SSL gratis para tu web en CentOS 7

En esta entrada veremos cómo obtener certificados SSL gratis para tu web paso a paso en CentOS 7. Con esta guía aprenderás a conseguir los certificados SSL gratuitos de Let’s Encrypt a través del comando certbot y a configurar tu servidor web para usarlos, pudiendo ofrecer tus páginas web alojadas en CentOS 7 a través del protocolo HTTPS.

Antes de obtener tu certificado SSL gratuito

Para seguir esta guía necesitaremos lo siguiente:

  • Un sistema CentOS 7 actualizado.
  • Tener añadido el repositorio EPEL.
  • Un servicio web instalado y en ejecución.
  • Cierto conocimiento de configuración del servidor web.
  • El dominio para el que quieres conseguir tu certificado SSL gratis apuntando a la máquina CentOS 7 (accesible vía web).
  • Acceso por terminal como root o usuario con permisos de sudo.
  • Conexión a Internet.

En el caso de que aún no hayas registrado el dominio, te recomiendo Namecheap, el sitio en el que registro y renuevo todos mis dominios, incluyendo esta página que estás visitando ahora.

Situación inicial

Partimos de la situación en la que el servidor web está configurado para ofrecer la web del dominio mediante protocolo HTTP pero no HTTPS:

obtener certificados ssl gratis en centos 7

Cómo instalar certbot en CentOS 7

Para instalar certbot en CentOS 7 obtendremos mediante yum el paquete certbot junto con sus dependencias. En primer lugar actualizaremos el sistema:

~$ sudo yum -y update

Recuerda que necesitamos tener configurado el repositorio EPEL. Con el sistema actualizado, es el momento de instalar certbot:

~$ sudo yum -y install certbot

Ya podemos usar esta herramienta para solicitar e instalar los certificados SSL gratuitos.

Cómo solicitar y obtener el certificado SSL de Let’s Encrypt

Conectaremos con la autoridad certificadora Let’s Encrypt desde consola utilizando certbot, a través de su script interactivo.

La sintaxis del comando es la siguiente:

certbot certonly --authenticator standalone --pre-hook "comando_para_detener_el_servidor_web" --post-hook "comando_para_iniciar_el_servidor_web"

Y esto funciona del siguiente modo:

  1. Lanzamos el comando certbot con los parámetros adecuados.
  2. El script interactivo solicita cierta información, como el dominio para el que queremos el certificado SSL.
  3. Se detiene el servidor web con el comando suministrado en –pre-hook.
  4. Certbot conecta con Let’s Encrypt, solicita, obtiene e instala el certificado SSL (de forma gratuita).
  5. Se inicia el servicio web con el comando indicado en el parámetro –post-hook.

Al final del proceso el servicio web sigue funcionando y los certificados SSL quedan instalados en el sistema, pero NO en la configuración del servidor web, cosa que hay que hacer manualmente.

Ahora que ya sabemos cómo funciona el proceso, vamos a realizarlo.

Cómo ejecutar certbot para instalar el certificado SSL

Para este tutorial solicitaré un certificado SSL gratuito de Let’s Encrypt para el dominio centos7.comoinstalar.me.

El servidor web de la máquina CentOS 7 de este ejemplo será Apache, por lo que los comandos que pasaremos como parámetros son systemctl stop/start httpd.

Lanzamos el comando certbot completo:

~$ sudo certbot certonly --authenticator standalone --pre-hook "systemctl stop httpd" --post-hook "systemctl start httpd"

Además del dominio al que asociar el certificado, la primera vez que usamos certbot nos pedirá una dirección de correo electrónico para informar de posibles problemas e información relacionada con el certificado SSL y el dominio.

También pedirá la aceptación de los términos del servicio y si estamos interesados en recibir mensajes sobre el patrocinador de Let’s Encrypt.

En siguientes ocasiones, sólo se pedirán los dominios.

Ubicación del certificado SSL en el sistema

Tras la ejecución de certbot, los archivos de configuración se encuentran en bajo la ruta /etc/letsencrypt/.

Para acceder a los certificados tenemos una serie de enlaces simbólicos que se encuentran en /etc/letsencrypt/live/ en una carpeta con el mismo nombre que el dominio para el que se solicitaron.

Siguiendo con el ejemplo de este tutorial, para el dominio centos7.comoinstalar.me tendremos estos archivos:

/etc/letsencrypt/live/centos7.comoinstalar.me/cert.pem
/etc/letsencrypt/live/centos7.comoinstalar.me/chain.pem
/etc/letsencrypt/live/centos7.comoinstalar.me/fullchain.pem
/etc/letsencrypt/live/centos7.comoinstalar.me/privkey.pem

Podrás comprobar, como dije antes, que son enlaces simbólicos, pero sirven perfectamente para configurar el servidor web.

Configuración del servidor web para usar el certificado SSL

Suponiendo que estamos usando Apache como servicio web, en primer lugar debemos instalar y activar el módulo SSL de Apache (mod_ssl).

Para configurar el acceso HTTPS editaremos el archivo de configuración del servidor virtual que se encarga del dominio con el que estamos trabajando, y añadimos un bloque <VirtualHost> como este:

<VirtualHost *:443>
        ServerName centos7.comoinstalar.me
[...]

        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/centos7.comoinstalar.me/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/centos7.comoinstalar.me/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/centos7.comoinstalar.me/chain.pem

[...]
</VirtualHost>

Añade el resto de directivas de configuración, guarda los cambios y recarga el servicio web. Ya está accesible el dominio a través de HTTPS:

como obtener certificados ssl gratis en centos 7
Acceso a través de protocolo HTTPS

Renovación del certificado SSL

Un dato muy importante sobre estos certificados gratuitos de Let’s Encrypt es que tienen una validez de tan solo tres meses. Pero no hay por qué preocuparse, ya que podemos renovarlos tantas veces como deseemos y de forma igualmente gratuita.

Además, la renovación es automática, mediante el servicio cron del sistema.

En la carpeta /etc/letsencrypt/renewal/ se guardan los archivos de configuración para la renovación de los certificados de Let’s Encrypt. Un archivo .conf por cada dominio.

El contenido del archivo de renovación para el certificado de este ejemplo sería:

# renew_before_expiry = 30 days
version = 0.31.0
archive_dir = /etc/letsencrypt/archive/centos7.comoinstalar.me
cert = /etc/letsencrypt/live/centos7.comoinstalar.me/cert.pem
privkey = /etc/letsencrypt/live/centos7.comoinstalar.me/privkey.pem
chain = /etc/letsencrypt/live/centos7.comoinstalar.me/chain.pem
fullchain = /etc/letsencrypt/live/centos7.comoinstalar.me/fullchain.pem

# Options used in the renewal process
[renewalparams]
authenticator = standalone
post_hook = systemctl start httpd
account = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
server = https://acme-v02.api.letsencrypt.org/directory
pre_hook = systemctl stop httpd

Es importante conocer la existencia de este archivo porque si cambiaras de servidor web tendrías que actualizar los valores de las directivas post_hook y pre_hook.

Estos valores son los comandos necesarios para detener y volver a iniciar el servidor web, ya que la renovación automática detiene momentáneamente el servicio para actualizar los certificados.

Otro dato importante a conocer es que la renovación, por defecto, se realiza 30 días antes de la expiración del certificado, añadiendo tres meses de validez a la fecha de la renovación.

Conclusión

Ya sabes cómo obtener certificados SSL gratis procedentes de la autoridad certificadora Let’s Encrypt.

Mediante la herramienta certbot obtendrás e instalarás estos certificados en tu sistema, y son válidos para usar con cualquier servidor web que uses.

La validez del certificado es de tan sólo tres meses, pero las renovaciones, también a través de certbot, son automáticas, gratuitas e ilimitadas.

Ya no tienes excusa para ofrecer tus páginas cifradas a tus usuarios desde tu servidor o VPS CentOS 7.

Si tienes cualquier duda, pregunta o sugerencia, déjame un comentario.

¡Apoya este sitio!

Si has llegado hasta aquí y has seguido esta guía, te acabas de ahorrar un buen dinerito. Sobre todo si trabajas con un VPS CentOS 7 alojando múltiples sitios… A lo mejor estás tan feliz por ese ahorro que te apetece apoyar el mantenimiento de este sitio con una mínima contribución.

¡Gracias!

Valora esta entrada

5/5 - (1 voto)

2 comentarios en «Cómo obtener certificados SSL gratis para tu web en CentOS 7»

  1. Hola, ¡excelente tu post! Me super ayudó, sólo una consulta, ¿para que se renueve el certificado tengo que hacer algo o ya con el simple hecho de haber ejecutado certbot queda automáticamente registrada la renovación? Porque tengo /etc/letsencrypt/renewal/ pero no sé si tengo que hacer algo para que se renueve solo. Muchas gracias nuevamente. Saludos.

    Responder

Deja un comentario