Aprendamos a instalar el servidor HTTP Apache y a protegerlo con el certificado Let's Encrypt.
Introducción
Apache es uno de los servidores web HTTP más utilizados. Configurar el apache y asegurarlo con un certificado SSL es el primer paso que debe hacer para sus aplicaciones web.
En este tutorial, usted aprenderá cómo configurar Apache para su sitio web en Ubuntu y CentOS. He probado esto en DigitalOcean VM.
Para la demostración. Voy a utilizar el nombre de dominio de prueba test.sanakil.xyz, que es sobrecargado por Cloudflare.
No olvide sustituir el prueba.sanakil.xyz dominio con tu dominio real. 📢
Creación de registros DNS
Inicie sesión en Cloudflare o en el registrador de su dominio (si no es Cloudflare) y cree un Un récord para apuntar el dominio a la IP de la máquina virtual en la nube.

Inicie sesión en su servidor en la nube mediante SSH.
Instalación de Apache (Ubuntu)
Para actualizar los paquetes disponibles
sudo apt-get update
Instalar apache
sudo apt-get install apache2
Permita los puertos 80 y 443 en su cortafuegos para el servidor HTTP.
sudo ufw allow 'Apache Full'
Compruebe que su apache instalado funciona correctamente
sudo systemctl status apache2

Instalación de Apache (CentOS)
Actualice al día los paquetes disponibles.
sudo yum update
Instalar Apache
sudo yum install httpd
Añade los puertos 80 y 443 en el cortafuegos para acceder a la aplicación web.
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
Inicie apache y compruebe el estado de ejecución
sudo systemctl start httpd
sudo systemctl status httpd
Crear VirtualHost para el sitio web
Un host virtual puede crearse de dos formas dependiendo del tipo de aplicación web/sitio web al que prestemos servicio.
Supongamos que la aplicación ya tiene un servidor web como Node ejecutándose en un puerto. Podemos utilizar un proxy para servirlo en apache. O si la aplicación sólo está sirviendo los archivos como sitios estáticos. Podemos especificar el ruta de la aplicación a servir en apache.
Crear un archivo de host virtual en apache - el archivo de configuración puede tener cualquier nombre. Pero mantenerlo con el nombre de dominio que vamos a servir la aplicación web será mejor para una fácil identificación.
Configuración adicional para CentOS
En CentOS(SELinux), no todo está habilitado por defecto como en Ubuntu.
Tenemos que crear sitios habilitados y sitios disponibles carpetas en apache.
sitios habilitados - le dice a apache que sirva al visitante con los archivos conf en él
sitios disponibles - almacenar los archivos conf del host virtual
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled
Ahora dile al apache que lea el archivo conf en la carpeta sites-enabled.
sudo vi /etc/httpd/conf/httpd.conf
Añada la siguiente línea al final del archivo
IncludeOptional sites-enabled/*.conf
Configurar Apache para servir archivos
- Crea una carpeta para servir tu aplicación web
sudo mkdir -p /var/www/test.sanakil.xyz/webapp
sudo vi /var/www/test.sanakil.xyz/webapp/index.html
- Pegue el siguiente fragmento HTML para probarlo
<!DOCTYPE html>
<html lang="en">
<head>
<title>Aplicación web Apache</title>
</head>
<body>
<h1>Mi Apache webapp está trabajando en test.sanakil.xyz</h1>
</body>
</html>
- Crear una carpeta para generar y almacenar registros
sudo mkdir -p /var/www/test.sanakil.xyz/log
sudo touch /var/www/test.sanakil.xyz/request.log
sudo touch /var/www/test.sanakil.xyz/log/error.log
- Abrir archivo conf(Ubuntu)
sudo vi /etc/apache2/sites-available/test.sanakil.xyz.conf
- Abrir archivo conf(CentOS)
sudo vi /etc/httpd/sites-available/test.sankil.xyz.conf
- Pegue el siguiente fragmento de conf cambiando el nombre de su dominio
<VirtualHost *:80>
ServerName test.sanakil.xyz
ServerAlias test.sanaki.xyz
DocumentRoot /var/www/test.sanakil.xyz/webapp
ErrorLog /var/www/test.sankil.xyz/log/error.log
CustomLog /var/www/test.sanakil.xyz/log/requests.log combined
</VirtualHost>
- Conceda los permisos necesarios para su carpeta.
sudo chown -R $USER:$USER /var/www/test.sanakil.xyz
sudo chmod -R 755 /var/www/test.sanakil.xyz
sudo a2ensite test.sanakil.xyz.conf
Desactivar el archivo conf por defecto por razones de seguridad
sudo a2dissite 000-default.conf
Reinicie apache para que los cambios surtan efecto.
sudo systemctl restart apache2
Habilite su archivo de configuración de host virtual en apache(CentOS)
Crear un enlace simbólico para apache
sudo ln -s /etc/httpd/sites-available/test.sanakil.xyz.conf
/etc/httpd/sites-enabled/test.sanakil.xyz.conf
Reinicie apache para que los cambios surtan efecto.
sudo systemctl restart httpd
Activar HTTPS
Habilitar HTTPS en el servidor web apache en Ubuntu se ha hecho fácil mediante el uso de certbot y Let's Encrypt.
Encriptemos es una organización sin ánimo de lucro que proporciona certificados SSL gratuitos a millones de sitios web.
Certbot es un software que configurará automáticamente HTTPS para nuestro sitio web utilizando let's encrypt.
Añadir e instalar certbot para apache(Ubuntu)
sudo add-apt-repository ppa:certbot/certbot
sudo apt install python-certbot-apache
Añadir e instalar certbot para apache(CentOS)
sudo yum install epel-release
sudo yum install certbot python2-certbot-apache mod_ssl
Obtener certificado SSL
sudo certbot --apache -d your-domain-name
Si toda la verificación la hace certbot sin problemas.
Preguntará por la redirección HTTPS. Seleccione la opción 2 e introduzca.
Ya está.
Si todo funciona correctamente, https://test.sanakil.xyz mostrará una página índice HTML básica que hemos creado.

Conclusión
Espero que esto te de una idea sobre como instalar e implementar un certificado SSL en Apache.
A continuación, descubra cómo implementar un certificado en Nginx.