Cómo proteger mi sitio de WordPress con SSL

Hace algunos días anunciábamos los cambios que está implementando Google en su motor de búsqueda, relacionados con la idea de “subir” el ranking de los sitios que trabajen bajo un protocolo de navegación seguro (SSL/TLS) en los resultados de búsqueda.

Esto, sumado a los acontecimientos que en los últimos meses han demostrado la necesidad de tomar mayores recaudos a la hora de hablar de seguridad en Internet, nos lleva a evaluar diferentes alternativas para proteger nuestra información. En este post les ayudaré a implementar un certificado de seguridad (SSL/TLS) en un sitio de WordPress self-hosted.

WordPress.com no soporta el uso del HTTPS en dominios personalizados. Sin embargo, sí lo permite en aquellos blogs con dominio finalizado en wordpress.com. Más info aquí.

TLS (Transport Layer Security, por sus siglas en inglés) es uno de los protocolos de cifrado de información comunmente utilizados en Internet para proteger los datos enviados entre dos equipos. Más conocido como “HTTPS” o “HTTP con candado”, TLS y SSL, su antecesor, permiten a los usuarios asegurarse que los datos que intercambian en un sitio web viajan de manera segura y no puedan ser interceptados por usuarios malintencionados.

Hosting y SSL

Para empezar, debemos asegurarnos que nuestro proveedor de hosting permita agregar certificados de seguridad en el plan que tenemos contratado. Algunos proveedores solo permiten la instalación de certificados en planes del tipo VPS, no dejando muchas alternativas a los usuarios de hosting compartido. Otros, solo aceptan certificados emitidos por sus propias entidades.

NEOLO, proveedor de hosting de Argentina, nos cuenta que a partir de mañana todos sus planes de almacenamiento admitirán certificados SSL.

CoriaWeb, desde España, confirma que desde hace tiempo ya aceptan certificados SSL en todos sus planes de almacenamiento.

Generar un certificado

Una vez confirmado esto, necesitamos generar el certificado de seguridad. Los pasos a seguir variarán de acuerdo al proveedor de hosting, por lo que les recomiendo consultar con ellos cómo obtener la solicitud de firma de certificado (CSR, por sus siglas en inglés). El proceso es bastante sencillo, y casi todos los emisores de certificados brindan instrucciones al respecto.

Los certificados son emitidos por entidades certificantes de nivel internacional, como Symantec, GoDaddy, USERTrust, Comodo SSL, Thawte y sus revendedores. GoDaddy, por ejemplo, ofrece un año de certificado de seguridad gratuito con su plan de almacenamiento avanzado, y los años subsiguientes a solo 70 dólares. Su plataforma de hosting compartido acepta certificados propios y de terceros.

Comodo SSL ofrece un certificado de prueba por 90 días (mucho más que la competencia). Este certificado nos permitirá probar si nuestra plataforma es capaz de soportar y procesar el tráfico HTTPS. Para comenzar, pueden ingresar aquí.

¡Manos a la obra!

Ya con el certificado emitido e instalado en nuestra plataforma de almacenamiento, podremos poner manos a la obra en el blog. Existen decenas de plugins (como WordPress HTTPS) que hacen el trabajo sucio, pero vamos a hacerlo por nuestra cuenta.

Lo primero que necesitamos es actualizar la URL del sitio de WordPress. Para ello, desde el escritorio de WordPress, haremos clic en Ajustes > Generales y reemplazaremos http por https en las dos direcciones que allí aparecen, tal como podemos observar en la siguiente imagen:

como-proteger-mi-sitio-de-wordpress-con-ssl_002

Luego agregaremos la siguiente línea en el archivo wp-config.php (el mismo en el que especificamos la información de conexión a la base de datos de WordPress), para forzar el cifrado de los datos intercambiados en el inicio de sesión y el panel de administración del blog:

define('FORCE_SSL_ADMIN', true);

La línea debe ir justo antes del “require_once”, de la siguiente manera:

define('ABSPATH', dirname(__FILE__).'/');
define('FORCE_SSL_ADMIN', true);
require_once(ABSPATH.'wp-settings.php');

.htaccess y links

En este momento, nuestro blog ya es navegable por HTTPS. Sin embargo, también lo es por HTTP. Si queremos que todas las páginas sean navegadas exclusivamente por HTTPS, debemos hacer un pequeño ajuste en el archivo .htaccess, que se encuentra en el directorio raiz del sitio.

Agregaremos el siguiente fragmento, reemplazando www.pablofain.com por el dominio en cuestión, antes de la configuración de WordPress:

#RewriteEngine On
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.pablofain.com/$1 [R=301,L]

El archivo quedaría de la siguiente manera:

#RewriteEngine On
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.pablofain.com/$1 [R=301,L]

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

Por otra parte, si en alguna oportunidad hemos utilizado links absolutos (aquellos conformados por la URL completa, por ej.: http://www.pablofain.com/nombre-del-post), nos gustará reemplazarlos por otros en formato relativo. Para ello les recomiendo el plugin Search and replace. ¡Antes de hacer cualquier cambio, hagan un backup de su base de datos!

Contenido no seguro

Algunos temas y plugins utilizan URLs absolutas, por lo que parte del contenido del sitio puede no transmitirse de manera segura. El sitio Why No Padlock? nos permite identificar y corregir el contenido que no viaja por HTTPS.

En la siguiente entrega les mostraré cómo configurar el inicio de sesión unificado, que les permitirá ingresar a su blog utilizando una cuenta de WordPress.com.

¡Hasta la próxima!

24 comentarios en “Cómo proteger mi sitio de WordPress con SSL

  1. Hola Luis! Lo que ocurre es que en tu hoja de estilos y demás páginas estás llamando a recursos no HTTP.

    Esto lo puedes chequear ingresando la URL de tu sitio en http://www.whynopadlock.com (allí podrás observar los objetos que son llamados via HTTP y no HTTPS). Te sugiero que utilices referencias relativas en lugar de absolutas, por ej. llamar a un objeto como //www.direccionsostenible.com/imagen.jpg en lugar de http://www.direccionsostenible.com/imagen.jpg.

    Espero que la respuesta te sirva.

    Un abrazo!

    Pablo

  2. Hola Pablo,

    Espero y te encuentres bien.

    Tengo un certificado de seguridad SSL en uno de mis sitios web, pero tengo una duda que no he podido resolver.

    Cuando estoy en la administración de WordPress, o entro a iniciar sesión es el candado color verde, pero cuando estoy viendo el sitio web tiene un icono amarillo de advertencia.

    No entiendo el por que sucede esto, creo que se me fue alguna configuración, si tienes alguna idea, tu ayuda me seria util.

    Gracias por tu tiempo!
    Saludos!

Deja un comentario