Para habilitar HTTPS sobre una instalación de Apache 2.2 hay, en primer lugar, que obtener los paquetes que proporcionan la S, que son openssl y ssl-cert.
# apt-get install openssl ssl-cert
A continuación se ejecuta la siguiente orden que pedirá los datos que deben introducirse en el certificado y generará éste. Para el valor nombre se espera que se proporcione la dirección del sitio (sin la cabecera de protocolo, sólo el nombre del dominio):
# openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/ssl-cert/sitio.apache.pem -keyout /etc/apache2/ssl-cert/sitio.apache.pem
Es conveniente restringir el acceso al contenido del fichero, ya que contiene la clave privada que se utilizará para el cifrado.
# chmod 600 /etc/apache2/ssl-cert/sitio.apache.pem
A continuación se configura Apache para el uso de SSL con el certificado generado. Pata ello lo primero es revisar el contenido de /etc/apache2/ports.conf para comprobar que Apache incluye el puerto 443 entre sus puertos de escucha.
Listen 443
Habilitar el módulo ssl
# a2enmod ssl
Si sólo se quiere aplicar a ciertos sitios se crea un VirtualHost para el puerto seguro
<VirtualHost sitio:443>
incluyendo lo siguiente dentro de la sección VirtualHost
SSLEngine on
SSLCertificateFile /etc/apache2/ssl-cert/sitio.apache.pem
Si además sólo se quiere permitir el acceso por HTTPS se crea el sitio virtual para HTTP y se redirige al correcto mediante uno de los siguientes métodos:
<VirtualHost sitio:80># Método 1
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}# Método 2
# RewriteEngine On
# RewriteCond %{SERVER_PORT} !^443$
# RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]
</VirtualHost>
Ahora se reinicia Apache
# /etc/init.d/apache2 restart
Si falla la redirección y en el reinicio de Apache da un error
Could not reliably determine the server’s fully qualified domain name
habrá que proporcionar el nombre del servidor en la sección principal de la configuración (httpd.conf)
Servername nombre.servidor.tld
Referencias:
- http://www.debianadmin.com/install-and-configure-apache2-with-php5-and-ssl-support-in-debian-etch.html
- http://albertoliva.com/index.php/2007/01/24/redirigir-el-puerto-http-al-https-en-apache/
1 comentario en “Apache con SSL”