En este tutorial, te guiaré a través de la instalación y configuración de Apache ssl con Let’s Encrypt en Ubuntu, para habilitar conexiones seguras mediante HTTPS. Apache2 es uno de los servidores web más populares y al integrar Let’s Encrypt, obtendrás certificados SSL gratuitos para proteger tus sitios web. Prepárate para proporcionar una capa adicional de seguridad a tus aplicaciones y sitios web en Ubuntu. ¡Vamos a comenzar!
Empezamos ingresando a la consola y actualizando las dependencias
sudo apt update
Instalamos apache2
En esta sección instalaremos los componentes necesarios para poder hacer la configuración, para ello te dejo un post en el cual ya instalamos este servidor de páginas web y además donde podemos configurar nuestros host virtuales.
https://tenocode.com/apache2-ubuntu/
Si ya completaste el post anterior, o ya tenías anteriormente tus archivos host con HTTP, ahora podemos empezar a configurar ssl en nuestro sitio.
Instalamos lo siguiente vía consola
sudo apt install certbot python3-certbot-apache
Configuramos nuestro sitio
Cuando instalas apache2, por defecto genera archivos de ejemplo. Nos dirigimos a la ruta , en donde encontramos la configuración de los sitios que levantaremos.
cd /etc/apache2/sites-available/
En esta ruta debemos comprobar que nuestro sitio que corre en el puerto 80, esté correctamente configurado. La instalación del certificado de seguridad, ssl con let encript, trabaja con la base de que ya existe un sitio corriendo con protocolo http.
Instalación del certificado
Para instalar un nuevo certificado, ejecutaremos el siguiente comando, el cual nos solicitará una serie de preguntas para poder construir el certificado para nuestro sitio
sudo certbot --apache
Primero, le solicitará una dirección de correo electrónico válida. Esta dirección se utilizará para las notificaciones de renovación y los avisos de seguridad:

Después de proporcionar una dirección de correo electrónico válida, presione ENTER
para continuar con el siguiente paso. Luego, se le solicitará que confirme si acepta las condiciones de servicio de Let’s Encrypt. Puede confirmar pulsando Y y, luego, ENTER
:

A continuación, se solicitará que confirmes si deseas compartir tu dirección de correo electrónico con Electronic Frontier Foundation para recibir noticias y otra información. Si no lo deseas, escribe N
. De lo contrario, escribe Y
. Luego, presiona ENTER
para continuar con el siguiente paso.

En el siguiente paso, se solicitará que informes a Certbot los dominios para los que deseas activar HTTPS. Los nombres de dominio enumerados se obtienen de forma automática de la configuración del host virtual de Apache, por lo tanto, es importante que se asegure de que los ajustes de ServerName
y ServerAlias
estén configurados correctamente en el host virtual. Además, como se mencionó anteirormente, es requisito que ya este funcionando tu sitio con protocolo http. Si deseas habilitar HTTPS para todos los nombres de dominio enumerados, puedes dejar la solicitud en blanco y presionar ENTER
para continuar. De lo contrario, selecciona los dominios para los que deseas habilitar HTTPS enumerando cada número correspondiente, separado por comas o espacios, y, luego, presionando ENTER
.

Lo anterior deployará automáticamente tus sitios con ssl, por lo que ahora verás que en la carpeta de sites-enables, se verán reflejados. Esto es todo ahora en el siguiente paso nos aseguraremos que este funcionando OK.
Testeando nuestro sitio
Bajamos nuestros archivo sin ssl, o sea ya no necesitaremos tener arriba el puerto 80, lo podemos bloquear (esto lo hacemos dentro de la carpeta sites-enabled o sites-available)
sudo a2dissite mi sitio-sin-ssl.conf
Podemos recargar con reload o reiniciar con restart, en nuestro caso para asegurarnos, haremos un
sudo systemctl restart apache2
Ahora nos vamos al browser y revisamos que nuestro sitio se cargue con https://misitio.com
Por último si quieres bloquear el puerto 80 lo hacemos con el siguiente comando
sudo ufw deny 80/tcp
SI tienes tus servicios en la nube(azure, aws, google cloud), debes verificar si hay alguna regla que de acceso a este puerto, y luego cerrarla. Puedes verificar con el comando nmap
sudo apt install nmap
Luego
nmap ip_publica_tu_equipo