Vistas de página en total

Mostrando entradas con la etiqueta openssl. Mostrar todas las entradas
Mostrando entradas con la etiqueta openssl. Mostrar todas las entradas

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: