Cómo proteger Apache con Free Lets Encrypt SSL Certificate en Ubuntu y Debian


¿Tiene un nombre de dominio recién registrado y su servidor web opera con un Certificado SSL Autofirmado emitido por usted que está causando dolores de cabeza a sus clientes mientras visitan el dominio debido a errores generados por el certificado? ¿Tiene un presupuesto limitado y no puede permitirse comprar un certificado emitido por una CA de confianza? Aquí es cuando el software Let's Encrypt entra en escena y salva el día.

Si está buscando instalar Let's Encrypt para Apache o Nginx en RHEL, CentOS, Fedora o Ubuntu y Debian, siga estas guías a continuación:

Let's Encrypt es una autoridad de certificación (CA) que le facilita la adquisición de los certificados SSL/TLS gratuitos necesarios para que su servidor funcione de forma segura, lo que hace que sus usuarios disfruten de una experiencia de navegación fluida y sin errores.

Todos los pasos necesarios para generar un certificado son, en su mayoría, automatizados para el servidor web Apache. Sin embargo, a pesar de su software de servidor web, algunos pasos deben realizarse manualmente y los certificados deben instalarse manualmente, especialmente en caso de que el contenido de su sitio web sea servido por el demonio Nginx.

Este tutorial lo guiará sobre cómo instalar el software Let's Encrypt en Ubuntu o Debian, generar y obtener un certificado gratuito para su dominio y cómo puede instalar manualmente el certificado en los servidores web Apache y Nginx.

  1. Un nombre de dominio público registrado con registros A válidos que apunten a la dirección IP externa de su servidor. En caso de que su servidor esté detrás de un firewall, tome las medidas necesarias para garantizar que su servidor sea accesible desde Internet en toda la palabra agregando reglas de reenvío de puertos en el lado del enrutador.
  2. Servidor web Apache instalado con el módulo SSL habilitado y el alojamiento virtual habilitado, en caso de que aloje varios dominios o subdominios.

Paso 1: Instale Apache y habilite el módulo SSL

1. Si no tiene el servidor web Apache ya instalado en su máquina, ejecute el siguiente comando para instalar apache daemon.

$ sudo apt-get install apache2

2. Activación del módulo SSL para el servidor web Apache en Ubuntu o Debian es bastante sencillo. Habilite el módulo SSL y active el host virtual SSL predeterminado de Apache emitiendo los siguientes comandos:

$ sudo a2enmod ssl
$ sudo a2ensite default-ssl.conf
$ sudo service apache2 restart
or
$ sudo systemctl restart apache2.service

Los visitantes ahora pueden acceder a su nombre de dominio a través del protocolo HTTPS. Sin embargo, debido a que el certificado autofirmado de su servidor no es emitido por una autoridad certificadora confiable, se mostrará una alerta de error en sus navegadores como se ilustra en la imagen a continuación.

https://yourdomain.com

Paso 2: Instale el cliente gratuito Let’s Encrypt

3. Para instalar el software Let's Encrypt en su servidor, necesita tener el paquete git instalado en su sistema. Emita el siguiente comando para instalar el software git:

$ sudo apt-get -y install git

4. A continuación, elija un directorio de la jerarquía de su sistema donde desee clonar el repositorio de git de Let's Encrypt. En este tutorial usaremos el directorio /usr/local/ como ruta de instalación para Let's Encrypt.

Cambie al directorio /usr/local e instale el cliente letsencrypt emitiendo los siguientes comandos:

$ cd /usr/local
$ sudo git clone https://github.com/letsencrypt/letsencrypt

Paso 4: generar un certificado SSL para Apache

5. El proceso de obtención de un Certificado SSL para Apache está automatizado gracias al complemento Apache. Genere el certificado emitiendo el siguiente comando contra su nombre de dominio. Proporcione su nombre de dominio como parámetro para la marca -d .

$ cd /usr/local/letsencrypt
$ sudo ./letsencrypt-auto --apache -d your_domain.tld

Por ejemplo, si necesita el certificado para operar en varios dominios o subdominios, agréguelos todos usando la marca -d para cada registro DNS válido adicional después del nombre de dominio base.

$ sudo ./letsencrypt-auto --apache -d your_domain.tld  -d www. your_domain.tld 

6. Acepte la licencia, ingrese una dirección de correo electrónico para la recuperación y elija si los clientes pueden explorar su dominio usando ambos protocolos HTTP (seguro e inseguro) o redirigir todas las solicitudes no seguras a HTTPS.

7. Una vez que el proceso de instalación finaliza con éxito, se muestra un mensaje de felicitación en su consola que le informa sobre la fecha de vencimiento y cómo puede probar la configuración como se ilustra en las siguientes capturas de pantalla.

Ahora debería poder encontrar sus archivos de certificado en el directorio /etc/letsencrypt/live con una lista de directorios simple.

$ sudo ls /etc/letsencrypt/live

8. Finalmente, para verificar el estado de su Certificado SSL visite el siguiente enlace. Reemplace el nombre de dominio en consecuencia.

https://www.ssllabs.com/ssltest/analyze.html?d=your_domain.tld&latest

Además, los visitantes ahora pueden acceder a su nombre de dominio mediante el protocolo HTTPS sin que aparezca ningún error en sus navegadores web.

Paso 4: La renovación automática permite cifrar certificados

9. De forma predeterminada, los certificados emitidos por la autoridad Let’s Encrypt tienen una validez de 90 días. Para renovar el certificado antes de la fecha de vencimiento, debe ejecutar manualmente el cliente nuevamente utilizando los indicadores y parámetros exactos como antes.

$ sudo ./letsencrypt-auto --apache -d your_domain.tld

O en el caso de varios subdominios:

$ sudo ./letsencrypt-auto --apache -d your_domain.tld  -d www. your_domain.tld

10. El proceso de renovación del certificado se puede automatizar para que se ejecute en menos de 30 días antes de la fecha de vencimiento mediante el demonio cron de programación de Linux.

$ sudo crontab -e

Agregue el siguiente comando al final del archivo crontab usando solo una línea:

0 1 1 */2 * cd /usr/local/letsencrypt && ./letsencrypt-auto certonly --apache --renew-by-default --apache -d domain.tld >> /var/log/domain.tld-renew.log 2>&1

11. Los detalles sobre el archivo de configuración de su dominio de renovación para el software Let’s Encrypt se pueden encontrar en el directorio /etc/letsencrypt/renewal/.

$ cat /etc/letsencrypt/renewal/caeszar.tk.conf

También debe verificar el archivo /etc/letsencrypt/options-ssl-apache.conf para ver el nuevo archivo de configuración SSL para el servidor web Apache.

12. Además, el complemento Let's encrypt apache modifica algunos archivos en la configuración de su servidor web. Para comprobar qué archivos se han modificado, enumere el contenido del directorio /etc/apache2/sites-enabled .

# ls /etc/apache2/sites-enabled/
# sudo cat /etc/apache2/sites-enabled/000-default-le-ssl.conf

¡Eso es todo por ahora! En la siguiente serie de tutoriales, se discutirá cómo puede obtener e instalar un certificado Let's Encrypt para el servidor web Nginx en Ubuntu y Debian y también en CentOS.