En este tutorial se muestra cómo asegurar un servidor web Apache con Ubuntu 18.04 a través de la instalación de un certificado de capa de sockets seguros (SSL). Hoy en día, habilitar una conexión cifrada al servidor web es fundamental porque le permite utilizar el protocolo HTTPS seguro para su sitio web.
Para ello se utilizará Let's Encrypt, una Autoridad de Certificación que emite un certificado gratuito totalmente acorde con los estándares de seguridad exigidos. Let's Encrypt simplifica el proceso de instalación del certificado de seguridad para ayudar incluso a los usuarios menos experimentados a proteger un sitio web mediante el uso del cliente Certbot.
Primero conéctese a su servidor a través de una conexión SSH. Si aún no lo ha hecho, se recomienda seguir nuestra guía para conectarse de forma segura con el protocolo SSH. En caso de un servidor local, vaya al siguiente paso y abra la terminal de su servidor.
Instalación de CertBot
Agregue el repositorio de Certbot.
$ sudo add-apt-repository ppa:certbot/certbot
En este punto instale Certbot usando apt:
$ sudo apt install python-certbot-apache
Después de completar la instalación, puede continuar con la configuración del firewall.
Configuración del cortafuegos
En caso de que haya un firewall en su sistema, configúrelo para habilitar el tráfico HTTP y el tráfico HTTPS a su máquina.
Al usar el firewall UFW, los perfiles preinstalados estarán disponibles para Apache. Así que veamos cómo habilitarlos.
Para verificar los perfiles disponibles instalados en el firewall UFW, ejecute este comando:
$ sudo ufw app list
Se mostrará una lista similar a la siguiente en la pantalla:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
Para permitir el tráfico HTTP (Puerto 80) y HTTPS (Puerto 443), use el perfil "Apache Full".
Verifique la información de su perfil de la siguiente manera:
$ sudo ufw app info "Apache Full"
Aparecerá la descripción del perfil en pantalla:
Profile: Apache Full
Title: Web Server (HTTP,HTTPS)
Description: Apache v2 is the next generation of the omnipresent Apache web
server.
Ports:
80,443/tcp
Después de verificar el perfil, se puede habilitar:
$ sudo ufw allow in "Apache Full"
Creación del certificado SSL
En este punto, solicite el certificado del dominio que desea proteger utilizando el Certbot instalado previamente.
Reemplace TUODOMINIO.IT con el nombre de dominio que desea proteger:
$ sudo certbot --apache -d TUODOMINIO.IT -d www.TUODOMINIO.IT
N.B. la redacción --apache especifica que el Certbot utilice el complemento de Apache, mientras que la redacción -d indica los nombres de dominio para los que se utilizará el certificado.
En este punto, especifique su dirección de correo electrónico, acepte los términos del servicio e indique si desea redirigir las conexiones a su sitio web hacia una conexión HTTPS.
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - No further changes to the webserver configuration.
2: Redirect - To redirect all requests to secure HTTPS access. Choose this option fornew websites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
N.B. Si ya hay un CMS o script en su sitio, se recomienda seguir nuestra guía para comprobar si es compatible con una conexión HTTPS antes de redirigir el tráfico.
Ingrese el número correspondiente a su elección y, si el trámite es exitoso. se mostrará un mensaje de confirmación en la pantalla.
Verificación de la renovación del Certificado
Los certificados SSL de Let's Encrypt son válidos durante 90 días, después de los cuales deben renovarse. Certbot también se ocupa de la renovación automática de los certificados, pero para garantizar que el procedimiento funcione correctamente, se recomienda seguir nuestra guía para intentar renovar manualmente el certificado de esta manera:
$ sudo certbot renew --dry-run
Si no se muestra ningún error, la renovación fue exitosa. De lo contrario, se enviará un correo electrónico a la dirección ingresada durante la creación del certificado, cuando se acerque su vencimiento.