Apache con SSL

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/

Un comentario en “Apache con SSL”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.