Páginas vistas en total

miércoles, 22 de junio de 2011

Habilitar HTTPS en Apache en Debian Lenny

Se tiene instalado Apache y cacti en Debian 5.0 y se desea acceder al servidor en forma segura.
Instalacion de openssh:
#aptitude install openssl
Habilitar SSH en apache:
#a2enmod ssl
Verificar que se este escuchando en el puerto 443 en el archivo /etc/apache2/ports.conf y buscar "Listen 443":
NameVirtualHost *:80
Listen 80


    # SSL name based virtual hosts are not yet supported, therefore no
    # NameVirtualHost statement here
    Listen 443


Generar clave privada en /etc/ssl/private/
openssl genrsa -out casaserver.key 1024
Generar el archivo csr(Certificate Signing Request):
openssl req -new -key casaserver.key -out casaserver.csr
Despues autofirmar en certificado, con un periodo de validez que se desee:
openssl x509 -req -days 365 -in casaserver.csr -signkey casaserver.key -out casaserver.crt

Buscar en /etc/apache2/sites-available/ un sitio como default-ssl o crear uno e incluir:
SSLEngine on
SSLCertificateFile /etc/ssl/private/casaserver.crt
SSLCertificateKeyFile /etc/ssl/private/casaserver.key:



        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/
        
                Options FollowSymLinks
                AllowOverride None
        
        
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/ssl_access.log combined

        Alias /doc/ "/usr/share/doc/"
        
                Options Indexes MultiViews FollowSymLinks
                AllowOverride None
                Order deny,allow
                Deny from all
                Allow from 127.0.0.0/255.0.0.0 ::1/128
        

        #   SSL Engine Switch:
        #   Enable/Disable SSL for this virtual host.
        SSLEngine on

        SSLCertificateFile    /etc/ssl/private/casaserver.crt
        SSLCertificateKeyFile /etc/ssl/private/casaserver.key

        #SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
        
                SSLOptions +StdEnvVars
        
        
                SSLOptions +StdEnvVars
        
        BrowserMatch ".*MSIE.*" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0





Habilitar el sitio default-ssl:
a2ensite default-ssl
Por ultimo reiniciar apache:
/etc/init.d/apache2 restart
Para acceder solo en forma segura se debe dehabilitar el sitio default y crear un sitio para redireccionar.
Para deshabilitar el sitio default de Apache buscar en /etc/apache2/sites-enabled/ y aplicar:
#a2dissite 000-default
En este caso el sitio se llamaba 000-default.
Luego en /etc/apache2/sites-available/ crear con un editor el archivo redir con este contenido:

    RewriteEngine on
    RewriteLog /var/log/apache2/https_rewrite.log
    RewriteLogLevel 1
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]

Luego habilitar el modulo rewrite:
a2enmod rewrite
Y reiniciar Apache, asi siempre se accederá con https aun cuando se escriba http.
Sitios de referencia: