Internet camina hacia el uso universal de conexiones seguras a pasos agigantados. Como muestra, Google lo toma como factor de posicionamiento y prefiere indexar URLs en versión HTTPS, Mozilla ha propuesto depreciar el protocolo HTTP no seguro, HTTP/2 solo funciona bajo HTTPS y agencias como el W3C o el IETF han hecho un llamamiento para el uso universal de comunicaciones encriptadas, llamamiento al que se han unido algunos gobiernos, entre ellos el de Estados Unidos.

Así que el uso de HTTPS (Hypertext Transfer Protocol Secure) será obligatorio en un futuro no muy lejano para cualquier comunicación en Internet. Toca migrar nuestras webs. En este tutorial aprenderemos como pasar nuestra web montada en WordPress desde HTTP a HTTPS en unos pasos sencillos y que aseguran que todo seguirá funcionando perfectamente.

1

Adquirir e instalar un certificado SSL

¿Había dicho dos pasos? Bueno, pues en realidad son tres, pero este primer paso es igual para cualquier web y no hay nada específico de WordPress involucrado.

Para que un navegador acepte una conexión segura con un servidor, el servidor ha de enviarle primero un certificado SSL (Secure Sockets Layer), el navegador comprueba que es válido y sólo entonces comenzará la comunicación encriptada.

Existen certificados gratuitos, de pago, baratos, caros, con diferentes niveles de validación, con seguros en caso de que la información se vea comprometida o sin seguro, y un largo etcétera. En función de estas características el precio puede variar muchísimo.

Generalmente el certificado consta de dos claves encriptadas. Una es el certificado en sí mismo y la otra es la firma del emisor del certificado. Las dos claves son necesarias para instalar el certificado correctamente. Los pasos para hacerlo pueden variar mucho de un servidor a otro pero la verdad es que casi todos los paneles de administración lo ponen fácil.

Por ejemplo, en cPanel busca el apartado “Seguridad → Administrador de SSL/TLS” y luego “Administrar los sitios SSL”. Sigue las instrucciones que aparecen en pantalla, son muy sencillas, pero si te ves con dudas lo mejor es que contactes con el soporte de tu proveedor de hosting para que te ayude.

Una vez que tengas el certificado SSL instalado, ve al paso número 2.

2

Search & Replace en la base de datos

WordPress guarda la URL del sitio en la base de datos desde la configuración (Ajustes → Generales); podrías cambiar esta configuración e introducir la versión HTTPS de tu dominio y ya está, como dicen muchos tutoriales, pero hay un gran problema: quedarán muchísimas referencias a la versión HTTP por toda la base de datos. Por ejemplo, la URL de imágenes insertadas en los posts.

Por eso no es suficiente con cambiar la configuración.

El problema se podría solucionar con diferentes enfoques. Para mí uno de los más directos es hacer un “buscar y reemplazar” en toda la base de datos. Buscamos las referencias a la versión en HTTP (http://example.com) y la reemplazamos por la versión HTTPS (https://example.com).

Y como WordPress tiene la costumbre de guardar datos serializados en la base de datos, y también lo hacen muchos plugins, has de hacer un search&replace que mantenga la validez de esos datos serializados. Existen muchas herramientas que hacen este trabajo muy bien, entre ellas Database search and replace for WordPress es una de las más populares. Sigue las instrucciones de uso que aparecen en su página, son bastante sencillas:

Search & replace DB
Search & replace DB

También puedes utilizar alguno de los muchos plugins disponibles, como Velvet Blues Update URLs o Better Search Replace. Y si utilizas wp-cli, puedes utilizar el siguiente comando:

wp search-replace 'http://ejemplo.com' 'https://ejemplo.com'
3

Redirigir todo el tráfico a HTTPS

Para terminar la migración, tenemos que redirigir todo el tráfico que nos llegue en la versión HTTP a la nueva URL. Con estas reglas en .htaccess, colocadas antes de las reglas de WordPress, haremos una redirección 301 para no perder ninguna visita ni ranking SEO:

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,QSA,L]

En realidad, una vez que la configuración de WordPress tiene la URL en la versión HTTPS, el propio WordPress puede hacer la redirección, pero esto supone cargar WordPress, redirigir al usuario y volver a cargar WordPress. Haciendo la redirección desde .htaccess, o desde la configuración del servidor, no se llega a ejecutar ni una sola línea de PHP y es mucho más eficiente.

Y ya está. Ya tienes tu WordPress servido completamente a través de HTTPS.

4

Forzar HTTPS SSL en instalaciones nuevas

Hemos visto como migrar una web que ya estaba funcionando en HTTP y pasarla a HTTPS. En el caso de que estés realizando una instalación de WordPress nueva, forzar HTTPS es tan fácil como instalar el certificado SSL en el servidor y hacer la instalación directamente sobre la URL en versión HTTPS, por ejemplo https://ejemplo.com/wp-admin/install.php.

Aunque no es necesario nada más, puedes añadir la redirección 301 que comentábamos antes en .htaccess o en la configuración del servidor./step]

Algunas consideraciones finales

Es muy frecuente ver tutoriales que hablan de meter código en wp-config.php o de utilizar algún plugin. Salvo unos pocos casos con necesidades muy concretas, nada de eso es necesario si se han seguido los pasos descritos en este tutorial.

También es frecuente que se recomiende revisar los archivos del theme y de los plugins instalados en busca de recursos cargados desde HTTP. Hazlo si ves errores de contenido mixto, pero en general tampoco debería ser necesario si el theme y los plugins han sido correctamente programados.

Otra cosa que se ve en muchos tutoriales es el forzado HTTPS sólo en la administración y login pero no en el resto del sitio. No voy a tratar esta opción ya que, como se decía en la introducción, Internet se mueve hacia el uso universal de HTTPS; utilizarlo sólo en algunas partes no es precisamente “universal”.