Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En Apache HTTP y Seguridad Última actualización: 15 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

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
Configuración del host virtual
  • 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
Habilite su archivo de configuración de host virtual en apache(Ubuntu)
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.

  • Aghilan Baskar
    Autor
Gracias a nuestros patrocinadores
Más lecturas sobre Apache HTTP
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba el lunes
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder