jueves, 15 de mayo de 2008

Como configurar Joomla y virtuemart en modo SSL

Lo primero es crear la CA y su certificado e instalarlo en el servidor

Una vez tengamos el certificado instalado en el dominio, el siguiente paso es activarlo, aqui es donde tenemos estas tres posibilidades:

1.- Poner todo el sitio bajo SSL
2.- Poner solo el admin bajo SSL (esto es bastante útil)
3.- Poner una serie de links determinados bajo SSL (esto será lo que haremos en nuestra práctica)


1.- Poner el sitio entero bajo SSL: No es muy recomendable, porque normalmente ralentiza bastante toda la navegación en general.

2.- Poner el administrator en SSL: Para poder loguearse al administrador en modo seguro SSL, es necesario editar los ficheros index.php e index2.php de la carpeta administrator. En el index.php inmediatamente después de la linea define( '_VALID_MOS', 1); teneis que poner el siguiente código:

//Redirect to https if accessed over http (except when running locally)

if ($_SERVER['SERVER_NAME'] != "localhost")
{
$port = $_SERVER["SERVER_PORT"];
$ssl_port = "443"; //Change 443 to whatever port you use for https (443 is the default and will work in most cases)
if ($port != $ssl_port)
{
$host = $_SERVER["HTTP_HOST"];
$uri = $_SERVER["REQUEST_URI"];
header("Location: https://$host$uri");
}
}

Igualmente hay que añadirlo en el index2.php inmediatamente despues de las directivas require_once al principio del fichero.

Con esto veréis que el administrator carga directamente en modo SSL. Una única cosa que he visto, es que en el editor WYSIWYG, no funcionan determinados popups de insertar imagen, etc. algo un poco molesto.

3. Configurar Virtuemart para que funcione bajo SSL: Virtuemart trae una opción en la configuración general, para activar el modo SLL, simplemente ponemos la URL de nuestra web, con el https, por ejemplo: https://www.tutienda.com (bastante cutre!). El problema que te vas a encontrar, es que cuando entras a realizar el pedido a modo seguro, cuando termines la compra o cuando pinches en cualquier otro link, seguirás con toda la web en modo seguro, porque no vuelve a poner http, en vez de https. Para conseguir que tu web cambie automáticamente a modo no seguro al pinchar en cualquier link normal, hay que realizar los siguientes ajustes:

Abrir el index.php de la raiz de joomla. En la línea 261, cerca de // loads template file cambiar todo ese bloque por esto:

// loads template file
if ( !file_exists( 'templates/'. $cur_template .'/index.php' ) ) {
echo _TEMPLATE_WARN . $cur_template;
} else {
if( $_SERVER['SERVER_PORT'] == 443 || @$_SERVER['HTTPS'] == 'on' ) {
$option = mosgetparam($_REQUEST, "option");
$page = mosgetparam($_REQUEST, "page");

if(@strstr($page, "account.") || @strstr($page, "checkout.") || @strstr($page, "shop.registration")){
$from_url = $mosConfig_live_site;
$to_url = str_replace("http:","https:",
$mosConfig_live_site);
ob_start();
require_once( 'templates/'. $cur_template .'/index.php' );
echo "";
$my_content = str_replace( "src=\"".URL, "src=\"".SECUREURL, ob_get_contents());
$my_content = str_replace( "src=".URL, "src=".SECUREURL, $my_content);
$my_content = str_replace( "url('".URL, "url('".SECUREURL, $my_content);
$my_content = str_replace( "url(".URL, "url(".SECUREURL, $my_content);
ob_end_clean();
echo $my_content;
}
else {
$to_url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
mosRedirect( $to_url );
}
}
else {
require_once( 'templates/'. $cur_template .'/index.php' );
echo "";
}
}

Bibliografía util:
http://www.netshinesoftware.com/security/using-an-ssl-certificate-with-your-joomla-website.html
http://www.joomlaspanish.org/foros/showthread.php?t=15108
http://www.adstudio.es/2008/02/20/poner-joomla-bajo-ssl/

5 comentarios:

Unknown dijo...

Hola
Soy nuevo en esto y he instalando virtuemart en joomla 1.5 funciona todo bastante bien pero estoy en la etapa de la seguridad del sitio y buscando info encontre tu blog, te pregunto que quieres decir con "Lo primero es crear la CA y su certificado e instalarlo en el servidor" si puedes explicarme detalladamente asi lo hago te lo agradeceria gracias!
saludos cordiales

Fandez dijo...

Buenas:
justo en el post anterior (http://juanferrub.blogspot.com/2008/05/como-configurar-un-servidor-seguro-con.html)
tienes la información que necesitas.
Un saludo

ʇǝs dijo...

funciona de la misma manera(o es el mismo proceso) si instalas un certificado como thawte

ʇǝs dijo...

lo de arriba es pregunta
je!

Fandez dijo...

Buenas!
Pues sí, es igual
Un saludo