En un mundo en línea que está constantemente inundado de amenazas de seguridad, proteger su servidor web debe ser lo más importante en la mente de uno. Una de las formas de asegurar su servidor web es implementar el protocolo HTTPS en su sitio usando un certificado SSL/TLS. Un certificado SSL/TLS no solo protege su sitio mediante el cifrado de la información intercambiada entre el servidor web y los navegadores de los usuarios, sino que también ayuda en la clasificación de Google.
En esta guía, aprenderá a proteger el servidor web Apache (http) con Let's Encrypt SSL/TLS en RHEL 8.
Requisitos
Esto es lo que necesita antes de continuar:
- Una instancia del servidor RHEL 8 con un usuario sudo configurado.
- Un nombre de dominio completo (FQDN) que apunta a la dirección IP pública de su servidor. A lo largo de esta guía, utilizaremos el nombre de dominio linuxtechgeek.info.
Paso 1) Instalar Apache en RHEL 8
El primer paso es instalar el servidor web Apache. Dado que Apache ya existe en el repositorio de AppStream de Red Hat, puede instalarlo utilizando el administrador de paquetes DNF de la siguiente manera.
$ sudo dnf install -y httpd
Una vez instalado, inicie el servidor web Apache y habilítelo para que se inicie en el momento del arranque.
$ sudo systemctl start httpd $ sudo systemctl enable httpd
Para verificar que Apache se está ejecutando, ejecute el comando:
$ sudo systemctl status httpd
Nota:En caso de que el firewall se esté ejecutando, permita los siguientes puertos de Apache en el firewall, ejecute
$ sudo firewall-cmd --add-port=80/tcp --permanent $ sudo firewall-cmd --add-port=443/tcp –permanent $ sudo firewall-cmd --realod
Ahora, puede dirigirse a su navegador web y explorar su dominio en la barra de URL.
Paso 2) Instalar Certbot
Certbot es un cliente de código abierto fácil de usar mantenido por EFF (Electronic Frontier Foundation). Obtiene el certificado TLS de Lets Encrypt y lo implementa en el servidor web. Al hacerlo, elimina la molestia y el dolor de implementar el protocolo HTTPS usando el certificado TLS.
Para instalar Certbot y los paquetes asociados, primero habilite EPEL (paquetes adicionales para Enterprise Linux).
$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
A continuación, instale el paquete certbot y mod_ssl de la siguiente manera.
$ sudo dnf install certbot python3-certbot-apache mod_ssl
Paso 3) Cree un archivo de host virtual de Apache
Los servidores virtuales permiten alojar múltiples dominios en un solo servidor web.
El primer paso es crear un directorio dentro de la raíz del documento donde irán todos los archivos del sitio web.
$ sudo mkdir -p /var/www/linuxtechgeek.info/html
Establezca la propiedad del directorio para el usuario de Apache.
$ sudo chown -R apache:apache /var/www/linuxtechgeek.info/html
Asegúrese de configurar los permisos del directorio como se muestra.
$ sudo chmod -R 755 /var/www
Con el directorio del dominio en su lugar con toda la propiedad y los permisos establecidos, crearemos un archivo de host virtual en el directorio /etc/httpd/conf.d/.
$ sudo vi /etc/httpd/conf.d/linuxtechgeek.info.conf
Pegue las siguientes líneas y tenga cuidado de usar su propio nombre de dominio.
<virtualhost *:80> ServerName linuxtechgeek.info ServerAlias www.linuxtechgeek.info DocumentRoot /var/www/linuxtechgeek.info/html ErrorLog /var/log/httpd/linuxtechgeek.info-error.log CustomLog /var/log/httpd/linuxtechgeek.info-access.log combined </virtualhost>
Guarde y salga del archivo virtualhost.
Para probar si el servidor virtual está funcionando, crearemos un archivo HTML de muestra en el directorio del sitio web.
$ sudo vi /var/www/linuxtechgeek.info/html/index.html
Pegue el siguiente contenido de muestra. Siéntete libre de modificarlo según tus preferencias.
<!DOCTYPE html> <html> <body> <h1> Welcome to Linuxtechi virtualhost </h1> </body> </html>
Guarde y salga del archivo HTML. Para guardar todos los cambios realizados, reinicie el servidor web Apache.
$ sudo systemctl restart httpd
Ahora, explore su dominio una vez más, y esta vez, en lugar de la página de bienvenida predeterminada de Apache, debería ver la página HTML personalizada que acaba de configurar. Esta es una prueba de que el archivo de host virtual está funcionando.
Paso 4) Apache seguro con el certificado Let's Encrypt
El último paso es obtener e implementar el certificado Let's Encrypt. Para hacer esto, simplemente ejecute el comando:
$ sudo certbot --apache
Cuando se ejecuta el comando, certbot lo guiará a través de una serie de indicaciones. Se le pedirá su dirección de correo electrónico y se le pedirá que acepte los Términos y condiciones. También se le preguntará si desea recibir correos electrónicos periódicos sobre noticias de EFF y campañas sobre libertad digital.
Cuando se le soliciten los nombres para activar HTTPS, simplemente presione ENTRAR para aplicar el certificado a todos los dominios proporcionados.
Certbot procederá a obtener el certificado TLS de Let's Encrypt y lo implementará en su servidor web. Luego, Certbot imprimirá la ruta donde se guardaron el certificado y la clave, así como la ruta de implementación del certificado para sus dominios.
Para verificar que Let's encrypt se implementó con éxito, actualice su navegador. Esta vez, notará un icono de candado al comienzo de la barra de URL que indica que el sitio se ha cifrado correctamente.
Puede hacer clic en el icono del candado para obtener más detalles
Además, puede realizar una prueba ssl en ssl labs para verificar digitalmente su certificado. Si todo salió bien, deberías obtener una calificación A.
Paso 5) Renovación del certificado Let's Encrypt
El certificado de Let's Encrypt es válido solo por 90 días. Unas semanas antes del vencimiento, normalmente recibirá una notificación de EFF sobre el vencimiento inminente del certificado y la necesidad de renovar su certificado.
Puede renovar manualmente el certificado ejecutando el comando:
$ sudo certbot renew
Para simular la renovación del certificado, ejecute el comando:
$ sudo certbot renew --dry-run
Esto simplemente imita la renovación real del certificado y no realiza ninguna acción.
Para automatizar la renovación del certificado, abra el archivo crontab
$ crontab -e
Especifique el trabajo cron a continuación que se ejecutará cada medianoche.
0 0 * * * /usr/bin/certbot renovar> /dev/null 2>&1
Conclusión
Esperamos que ahora pueda implementar sin problemas el certificado Let's Encrypt en RHEL para proteger el servidor web Apache.
Lea también :Cómo fortalecer y asegurar el servidor web NGINX en Linux