Apache sobre SSL
Publicado el 2 diciembre, 2017 por glaucuss
Introducción
Cuando hablamos de seguridad, en lo que a servidores de páginas web respecta, hablamos del protocolo https. Https es importante ya que nos proporciona un cifrado punto a punto (desde el servidor hasta el cliente) de las comunicaciones entre ambos, de forma que si alguien nos ataca e intercepta un paquete de red no pueda descifrarlo. Esto es útil cuando en nuestro sitio web se manejan contraseñas y credenciales de acceso susceptibles a ataques. Por ello es una medida de seguridad muy a tener en cuenta y hoy vamos a explicar como se instala en nuestros servidores, en nuestro caso usaremos Ubuntu Server.
Creación de un certificado SSL autofirmado
Las empresas de importantes y las grandes entidades suelen usar certificados SSL expedidos por la FNMT (Fábrica Nacional de Moneda y Timbre), que es una entidad cuyos certificados están reconocidos por los navegadores web y son oficiales. Para nuestro caso lo que pretendemos es simplemente cifrar el tráfico http por lo cual no nos hace falta solicitar dicho certificado oficial, basta con generar el nuestro de la siguiente manera
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/certificado.key -out /etc/ssl/certs/certificado.crt
Habilitar cambios en el servicio Apache2
Para que nuestro servidor Apache pueda interpretar dicho certificado y usarlo debemos habilitar varios de sus módulos
sudo a2enmod ssl && sudo a2enmod headers
Habilitar el uso de ssl en nuestro sitio web
Ahora vamos a habilitar en nuestro archivo de virtualhost por defecto el uso de SSL
sudo nano /etc/apache2/sites-available/default-ssl.conf
Y debería quedar de la siguiente manera:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin tudirecciondecorreo@dominio.tld
ServerName dominio_o_IP
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/certificado.crt
SSLCertificateKeyFile /etc/ssl/private/certificado.key
<FilesMatch “\.(cgi|shtml|phtml|php)$”>
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch “MSIE [2-6]” \
nokeepalive ssl-unclean- shutdown \
downgrade-1.0 force-response-
</VirtualHost>
</IfModule>
Redirección permanente a virtualhost ssl
Ahora debemos modificar nuestro archivo de virtualhost por defecto para que requiera siempre el uso de SSL
sudo nano /etc/apache2/sites-available/000-default.conf
Y debemos añadir la línea
. . .
Redirect permanent “/” “https://dominio_o_IP”
. . .
Ya solo nos quedaría reiniciar el servicio de Apache2 para aplicar todos los cambios