MiniHowto: Redirixir todo o tráfico http a https de modo transparente

Imaxe de oscar
Enviado por oscar en 8 Abril, 2008 - 16:21.

Pensemos que temos un servidor apache (versión 2)  correndo e que temos xa habilitado o módulo rewrite (comando coma administrador a2enmod rewrite pra habilitalo módulo). Temos xa creados os certificados pertinentes pra que o apache funcione baixo https (non é a finalidade deste mini-howto ensinar coma crealos certificados, nin ensinar a configuración do arquivo do apache) e a nosa máquina responde tanto as peticións baixo http (conexión non segura polo porto 80) coma https (conexión segura polo porto 443).

A nosa finalidade agora é que automáticamente cando alguén poña a url do dominio no noso navegador: http://dominio.com ou faga unha petición de calqueira das páxinas que haxa baixo este dominio automáticamente e de maneira transparente pra o usuario lle sirva a páxina mediante https de maneira que todo o tráfico vaia encriptado.

Isto pódese facer a través dun .htaccess, código javascript etc etc. No noso caso o que faremos será modificalo propio arquivo de configuración do apache2 /etc/apache2/sites-enabled/000-default (evidentemente teremos que ter acceso a máquina e permisos pra modificalo mesmo se non non poderemos usar este método).

Marcarei en negrita o que teremos que poñer pra que redirixa automáticamente o apache de http a https:

<VirtualHost IP:80>
   
    #
    #User vu2005
    #Group vu2005
    #
   
    #
    #SuexecUserGroup vu2005 vu2005
    #
    ServerAdmin     root@domain.com
    DocumentRoot    /directorio/htdocs
   
    ServerName      domain.com
    ServerAlias     www.domain.com domain.com *.domain.com
   
    RewriteEngine On
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R]

 
</VirtualHost>
<VirtualHost IP:443>
 
    #
    #User vu2002
    #Group vu2002
    #
 
    #
    #SuexecUserGroup vu2002 vu2002
    #
    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/domain.com.crt
    SSLCertificateKeyFile /etc/apache2/ssl/domain.com.key
 
    ServerAdmin     root@domain.com
    DocumentRoot    /var/www/virtual/domain.com/htdocs
 
    ServerName   domain.com
    ServerAlias     www.domain.com domain.com *.domain.com
 
    ErrorLog        /var/log/apache2/users/domain.com-error.log
    TransferLog     /var/log/apache2/users/domain.com-access.log
 
    CustomLog       /var/log/apache2/domain.com-traf.log traff
    CustomLog       /var/log/apache2/domain.com-combined.log combined
    Alias /errors   /var/www/virtual/domain.com/errors/
 
    ErrorDocument 401 /errors/401/index.php
    ErrorDocument 403 /errors/403/index.php
    ErrorDocument 404 /errors/404/index.php
    ErrorDocument 500 /errors/500/index.php
 
    # httpd dmn entry cgi support BEGIN.
    # httpd dmn entry cgi support END.
 
    <Directory /var/www/vhcs2/gui>
        php_admin_value open_basedir "/var/www/vhcs2/gui/:/etc/vhcs2/:/proc/:/var/www/virtual/:/tmp/"
    </Directory>
   
    # httpd dmn entry PHP2 support BEGIN.
    # httpd dmn entry PHP2 support END.
 
    <Directory /var/www/virtual/domain.com/htdocs>
        # httpd dmn entry PHP support BEGIN.
        # httpd dmn entry PHP support END.
        Options Indexes Includes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Engadindo esas 3 liñas en negrita a nosa configuración faremos que redirixa todo o tráfico directamente a https e irá moito máis rápido que se o facemos a través dun script (xa sexa cgi, javascript...) ou a través de .htaccess.

Espero que os serva de axuda,
Óscar Casal Sánchez

 Mail: oscar.casal[at]gmail.com


( categorías: )
Imaxe de Paco

Grazanhas Grazanhas

Como sempre un xefe, oscar.

teño pensado crear un miniproxectiño onde poder poñer estes pequenos códigos e telos catalogados por etiquetas. Cando o teña vos aviso a tod@s.

Por suposto sen dubidalo vai estar feito con Rails e poderá ser acedido mediante REST.

 

Mess with the Best, Die like the Rest.

Imaxe de oscar

Intentarei acostumarme a

Intentarei acostumarme a poñer cousas así, ó final seguro que hai a xente que lle serven xa que eu no seu momento pois tamén tiven que buscalas

(non é a finalidade deste

(non é a finalidade deste mini-howto ensinar coma crealos certificados, nin ensinar a configuración do arquivo do apache...)

Oes e podias facer un HowTo sobre isto. Estou acostumado a traballar con IIS e últimamente tamén me toca darlle ao Apache pero custame o cambio.

Moitas gracias!!!
Un Saudo dende a mariña.

Imaxe de oscar

Creación dos certificados

   Boas Replicante69,

   De momento poño un par de enlaces que che poden servir pra o tema da creación dos certificados:

http://www.kriptopolis.org/apache-con-ssl

http://ardentice.wordpress.com/2007/10/27/certificado-ssl-autogestionado-en-apache/