Instalar Certificados Https Gratis con Let’s Encrypt

0
975

En este tutorial, aprenderás el proceso de instalación de certificados TLS/SSL en Servidores Web Apache corriendo en Centos 6+. Una vez instalado, el trafico entre el cliente y servidor será encriptado y seguro. Este es un estándar en la partida para seguridad en sitios e-commerce y otros servicios donde se compartan datos sensibles de forma online.

Requisitos

Antes de empezar a trabajar necesitamos que tengas lo siguiente:

  • Acceso SSH (consola) al servidor con el usuario Root.
  • Tener Centos 6 en el servidor
  • Tener un dominio apuntando al Servidor apache y el host correctamente configurado.

Paso 1: Instalando Python y dependencias SSL

En Centos 6.x (6, 6.5, 6.6, 6.7, etc) ya vienen instalado con Python 2.6 por defecto, pero Let´s Encrypt soporta únicamente Python 2.7+. La actualización de Python es sencilla.

Una vez logueados con el usuario Root por SSH, ejecutaremos los siguientes comandos (Recordar que estos comandos solo funcionaran en CentOS 6.x).

yum install epel-release mod_ssl

rpm -ivh https://rhel6.iuscommunity.org/ius-release.rpm

yum --enablerepo=ius install git python27 python27-devel python27-pip python27- setuptools python27-virtualenv -y

Paso 2: Configurando Let’s Encrypt

Vamos a ejecutar el siguiente comando para clonar un repositorio con un script automático para obtener las dependencias de Let’s encrypt y poder hacer la configuración:

git clone https://github.com/letsencrypt/letsencrypt

Paso 3: Ejecutando Let’s Encrypt

Luego de clonar el repositorio de git, ya podemos utilizar y ejecutar el aplicativo letsencrypt-auto o letsencrypt, el aplicativo nos guiara paso a paso a través de la obtención e instalación de certificados, podremos elegir exactamente como deseamos configurarlo mediante la línea de comandos.

Por ejemplo, obtenga un certificado para su dominio utilizando el plugin de Apache para obtener e instalar los certificados, podemos ejecutar el siguiente comando:

./letsencrypt-auto --apache -d example.com -d www.example.com

En el caso que te salga un error porque el plugin de Apache no funciona, podemos utilizar este otro método de autenticación webroot:

./letsencrypt-auto certonly --webroot -w /var/www/example/ -d example.com

NOTA! El dominio ingresado en el comando, es el dominio que queremos certificar.

Paso 4: Configurar los certificados SSL

En el directorio de configuración de Let’s Encrypt ubicado generalmente en “/etc/letsencrypt/live/“ los archivos .pem son los siguientes que detallaremos a continuación:

  • privkey.pem: Llave privada para el certificado.
  • cert.pem: Certificado de servidor. Este certificado lo necesitaras configurar en Apache  > SSLCerticateFile.
  • chain.pem: Todos los certificados que necesita el browser excluyendo el certificado de servidor. Esto lo necesitaras configurar en Apache > SSLCertificateChainFile.
  • fullchain.pem: Todos los certificados, incluyendo el certificado de servidor. Es una concatenación de chain.pem y cert.pem.

Ahora que sabemos cuales archivos son los que debemos configurar en nuestro VirtualHost para utilizar SSL con nuestros nuevos certificados. La siguiente configuración la debes realizar en tu archivo de configuración de Apache generalmente ubicado en “/etc/httpd/conf/httpd.conf”.

<IfModule mod_ssl.c>
NameVirtualHost *:443
</IfModule>
<VirtualHost *:443>
DocumentRoot "/var/www/html/example”
ServerName example.com
ServerAlias example.com
<Directory /var/www/html/>
AllowOverride All
Order allow,deny
allow from all
</Directory>
SSLEngine on SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/example.com/cert.pem
</VirtualHost>

Finalmente, debemos reiniciar el servidor Apache para poder aplicar los cambios realizados, luego de eso ya podremos ingresar a nuestro sitio utilizando https.

Paso 5: Configurando la renovación automática

Los certificados de Let’s Encrypt solo son validos por 90 días, por lo general se recomienda renovarlo en 75 días para evitar algunos problemas. Para realizar esta renovación automática, utilizaremos el script “auto.sh”, lo podemos encontrar en Github (https://github.com/damiadev/autole/) y nos permitirá automatizar las siguientes tareas:

  • Verificar la fecha de caducidad del certificado y renovarlo unos días atrás del valor configurado.
  • Comprobar que el directorio del certificado esté bien mapeado.
  • Alertar al administrador si no es posible renovar el certificado.

Paso 5.1: Instalando Autole.sh:

Utilizando el link de GitHub, debemos clonar el repositorio para poder ejecutarlo luego:

git clone https://github.com/damiadev/autole/

Ahora debemos ejecutar el siguiente comando para renovar los certificados de dominio:

./autole.sh --renew-all

Para automatizar este proceso de renovación podemos configurar un cronjob. Primero necesitamos copiar el archivo “autole.sh” al directorio “/usr/local/sbin/“ y luego abrir y editar el crontab que nos servirá para registrar esta tarea programada:

crontab -e

Esté cronjob nos servirá para ejecutarse cada Lunes a la media noche:

0 0 * * 1 /usr/local/sbin/autole.sh --renew-all >> /var/log/sslrenew.log

Todos los mensajes brindados al ejecutar el script serán consolidados en “/var/log/sslrenew.log”.

Finalmente con estos pasos implementamos funciones de seguridad para proteger nuestro servidor web mediante certificados gratuitos SSL. Desde ahora todo el trafico entre nuestro sitio web y los usuarios estaba de forma segura, puedes estar seguro de que no podrán interceptar la comunicación para robar información sensible. 

Fuente: https://www.snel.com/support/install-lets-encrypt-ssl-centos-6-running-apache-web-server/

LEAVE A REPLY

Please enter your comment!
Please enter your name here