¿Cómo configurar HTTPS en Apache?

0
1206

En éste articulo, se muestra un ejemplo de cómo configurar HTTPS en Apache usando una clave autofirmada.

Primero vamos a crear  una clave y un certificado:

openssl req -new -x509 -days 365 -keyout server.key -out server.pem

Ahora cuando se le pregunte “Ingrese la contraseña de PEM:”, ingrese la contraseña y recuérdela.

Para las otras preguntas, simplemente puede presionar Enter aceptando las opciones propuestas, solo para la pregunta “Nombre común (por ejemplo, servidor FQDN o SU nombre):” ingrese el nombre del sitio para el cual se creó el certificado, por ejemplo www.example.com.

Después de responder las preguntas, aparecerán dos archivos server.pem y server.crt (clave y certificado) en el directorio.

Apache pedirá la contraseña de la clave que ingresamos anteriormente al cargar, por lo que eliminamos la contraseña de la clave:

cp server.key{,.orig}
openssl rsa -in server.key.orig -out server.key
rm server.key.orig

Copie los archivos en el directorio /etc/ssl y configure el archivo de clave para que sea de solo lectura para el administrador:

sudo cp server.key /etc/ssl/private/
sudo chmod 0600 /etc/ssl/private/server.key

Activamos el módulo apache2 ssl:

sudo a2enmod ssl

Active la configuración predeterminada de SSL:

sudo a2ensite default-ssl

Ahora, editemos el archivo de configuración /etc/apache2/sites-enabled/default-ssl.conf y después de la directiva SSLEngine on, agregue la línea SSLProtocol all -SSLv2 deshabilitando el uso del protocolo SSLv2 desactualizado.

Cambiamos las rutas a los archivos:

SSLCertificateFile /etc/ssl/certs/server.pem
SSLCertificateKeyFile /etc/ssl/private/server.key

Reinicie Apache2 para que los cambios surtan efecto:

sudo service apache2 restart

Recordemos que el protocolo HTTPS funciona en el puerto 443, si se usa un firewall, este puerto debe abrirse.

Si necesita usar solo HTTPS, hay que deshabilitar HTTP, y active el  mod_rewrite:

sudo a2enmod rewrite

Y edite el archivo /etc/apache2/sites-enabled/000-default.conf:

<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
</VirtualHost>

Reinicie Apache2 nuevamente para que los cambios surtan efecto:

sudo service apache2 restart

Finalmente, cuando abra la dirección http://www.example.com, el servidor redirigirá automáticamente a https://www.example.com.

Suerte 😎