Etiqueta: SSL

  • 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/