viernes, 23 de diciembre de 2016

Securizar Drupal 7.x

Partimos de un sitio web donde ya esta instalado Drupal (sobre apache) y un certificado SSL asociado, por ejemplo uno generado con Let’s Encrypt.

Ahora la idea es que todo el tráfico http se redireccione a https no dando la opción de trabajar con URLs sin encriptar. Esto lo hacemos modificando nuestro fichero .htaccess añadiendo las siguientes tres lineas justo debajo de ... RewriteEngine on

RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Ahora, el problema que se nos presenta es nuestra web mostrará contenido mixto, por un lado las páginas estarán bajo HTTPS pero scripts, css y otros ficheros seguirán bajo HTTP, con lo que el usuario debe especificarle al navegador que puede descargar el contenido HTTP, pero como ya necesitamos su intervención y eso no lo deseamos así que:

En el fichero /site/default/setting.php comentamos la línea que define la variable $base_url y añadimos la siguiente (o no la comentamos y la modificamos directamente... eso ya depende de lo valiente que seas).

$base_url = 'https://'.$_SERVER['SERVER_NAME'];

Y listo. Ya deberíamos ver todo nuestro sitio bajo HTTPS y sin ninguna advertencia de contenido mixto.

Suerte!