SSL gratis para cualquier sitio web de WordPress
Publicado: 2022-03-10Si tiene un sitio web de comercio electrónico, SSL es obligatorio para procesar tarjetas de crédito de manera segura. Pero incluso si no está procesando pagos, debería considerar seriamente HTTP seguro (o HTTPS), especialmente ahora que le mostraré cómo configurarlo rápidamente y de forma gratuita. Empecemos.
¿Qué es SSL y por qué debería importarme?
En resumen, SSL es la "S" en HTTPS. Agrega una capa de cifrado a HTTP que garantiza que el destinatario es realmente quien dice ser y que solo los destinatarios autorizados pueden descifrar el mensaje para ver su contenido.
Lectura adicional en SmashingMag:
- HTTPS en todas partes con Nginx, Varnish y Apache
- Cómo emitir un nuevo certificado SSL con una clave SSL anterior
- Preparándose para HTTP/2: una guía para diseñadores web
La información confidencial, como los números de tarjetas de crédito, básicamente, cualquier cosa privada, siempre debe servirse a través de HTTPS. Sin embargo, existe una tendencia cada vez mayor a servir todo el contenido a través de HTTPS, como vemos en sitios web de noticias, blogs, motores de búsqueda y los sitios web de la mayoría de las principales marcas. Por lo tanto, incluso si su sitio web no procesa pagos, hay buenas razones para considerar HTTPS, algunas de las cuales se enumeran aquí:
- Credibilidad Incluso las audiencias no técnicas asocian el pequeño candado verde en la barra de direcciones del navegador con confianza y confiabilidad.
- Protección de contraseña . Quizás su sitio web solo aloja videos de gatitos. Pero si los usuarios inician sesión en su sitio web a través de Wi-Fi con una contraseña que también usan para la banca en línea, entonces está facilitando potencialmente una violación de seguridad grave al transmitir esas credenciales públicamente.
- A prueba de futuro . Muchos sitios web todavía se sirven a través de HTTP, pero existe una tendencia innegable hacia HTTPS, y esto solo aumentará a medida que los usuarios se eduquen cada vez más sobre la seguridad web. Estar en el lado correcto de la historia.
- SEO Google anunció oficialmente que HTTPS se utiliza como señal de clasificación. En otras palabras, Google está recompensando a los sitios web HTTPS al mejorar su clasificación en los resultados de búsqueda.
Un argumento común contra HTTPS es que reduce el rendimiento. Es cierto que el proceso de encriptación y desencriptación cuesta milisegundos adicionales, pero en la mayoría de las situaciones es insignificante, como lo demuestra el hecho de que las empresas preocupadas por el rendimiento, como Google y Facebook, sirven todo su contenido a través de HTTPS. Y, es cierto, HTTPS puede exacerbar los problemas de rendimiento existentes, como muchos archivos CSS que se sirven individualmente, pero esto se mitiga siguiendo las mejores prácticas básicas para el rendimiento. Y con la adopción de HTTP/2, el costo de rendimiento de HTTPS es aún menor. La conclusión es que la reducción en el rendimiento es un impedimento significativo solo si su sitio web está hiperoptimizado o tiene un rendimiento tan bajo que cada milisegundo importa.
Cómo configurar HTTPS gratis
El primer paso para configurar HTTPS de forma gratuita es registrarse en un servicio de DNS en la nube. Si no tiene idea de qué es el DNS, le recomiendo que se tome un minuto para aprender antes de continuar. El encantador How DNS Works hace un gran trabajo al dividirlo en una caricatura divertida. De lo contrario, simplemente sepa que el DNS es el sistema mediante el cual los nombres de dominio como example.com
(que los humanos entienden) se vinculan a direcciones IP como 104.28.2.167
(que las computadoras entienden). Tienes muchas opciones, pero soy fanático de CloudFlare porque es muy rápido de configurar, el tablero es intuitivo y hay un plan gratuito disponible con muchas funciones poderosas.
Configuración de CloudFlare
Después de registrarse para obtener una cuenta de CloudFlare, se le guiará a través de un sencillo asistente para configurar su primer sitio web, que concluirá con instrucciones sobre cómo iniciar sesión en su registrador de dominio y apuntar los servidores de nombres a CloudFlare. El cambio tardará un tiempo en propagarse, pero cuando esté completo, CloudFlare alojará los registros DNS de su sitio web. A continuación, active la función "SSL flexible" de CloudFlare.

Elegir la configuración de "SSL flexible" es importante porque no requiere que compre e instale su propio certificado SSL en el servidor de su sitio web. Aquí hay un diagrama de lo que está sucediendo.

Como puede ver, CloudFlare actúa como intermediario para asegurar el tráfico entre su sitio web y el cliente. Si se tratara de un sitio web HTML estático, ahora podría conectarse a través de HTTPS ( https://yourdomain.com
). WordPress, sin embargo, requiere una configuración adicional para poder trabajar con el protocolo modificado.
Reconfigurando WordPress de HTTP a HTTPS
Primero deberá actualizar la configuración de "Dirección de WordPress" y "Dirección del sitio" en el tablero, en "Configuración" → "General". Cuando haga esto, tendrá que iniciar sesión en el tablero nuevamente.

Proceda con cautela. Si actualiza estas configuraciones prematuramente, corre el riesgo de bloquearse. Por ejemplo, si el sitio web aún no está configurado correctamente para HTTPS y la configuración está actualizada, podría provocar un bucle de redireccionamiento que interrumpa el sitio web y le impida acceder al panel.

En este punto, debería poder visitar la página de inicio del sitio web a través de HTTPS. Sin embargo, los enlaces de la página seguirán apuntando a las URL HTTP. WordPress almacena enlaces a páginas e imágenes como URL absolutas, lo que significa que la URL completa, incluido el protocolo, se guarda en la base de datos. Para asegurarse de que todo el sitio web se sirva constantemente a través de HTTPS (sin escupir advertencias sobre contenido mixto), deberá actualizar su contenido heredado.
Actualización de contenido heredado
En un sitio web pequeño con solo unas pocas páginas, la opción más rápida podría ser simplemente actualizar manualmente las URL editando las páginas existentes en la interfaz de administración. Si el sitio web es grande o tiene un blog muy activo, es probable que la edición manual no sea práctica. Si su host proporciona phpMyAdmin o alguna otra interfaz para ejecutar consultas MySQL, podría hacerlo con bastante facilidad con algunas consultas MySQL en la pestaña SQL. Alternativamente, puede seguir las instrucciones de Personalizar Windows para hacerlo desde la línea de comandos.
A riesgo de decir lo obvio, reemplace yourdomain.com
en las siguientes consultas con su dominio real . Además, si ha personalizado el prefijo de la tabla de WordPress, reemplace wp_
con el prefijo correspondiente.
Primero, actualice las URL de las publicaciones y páginas.
UPDATE wp_posts SET guid = replace(guid, 'https://yourdomain.com','https://yourdomain.com');
[ACTUALIZACIÓN: como se discutió en los comentarios, el campo GUID no debe editarse.]
Actualice también la tabla wp_postmeta
.
UPDATE wp_postmeta SET meta_value = replace(meta_value,'https://yourdomain.com','https://yourdomain.com');
Finalmente, actualice el contenido real de las publicaciones o páginas. Esto actualizará cualquier vínculo de retroceso a HTTPS.
UPDATE wp_posts SET post_content = REPLACE(post_content, 'https://yourdomain.com', 'https://yourdomain.com');
Después de ejecutar estas consultas, querrá actualizar sus enlaces permanentes yendo a "Configuración" → "Enlaces permanentes". Simplemente cambie la configuración a la predeterminada y luego vuelva a establecerla en la configuración que estaba usando originalmente.
Ahora, debería poder hacer clic en los menús y enlaces en todo el sitio web, y el protocolo debería seguir siendo HTTPS.
Solución de problemas de advertencias de contenido mixto
Según el tema y los complementos en uso, es posible que reciba una advertencia en la barra de direcciones que indique que ciertos recursos no se están sirviendo de forma segura. Si los errores están asociados con activos agregados por su propio complemento o tema personalizado, asegúrese de poner correctamente en cola los archivos JavaScript y CSS y no codificar las URL que comienzan con HTTP
. La mayoría de los navegadores le permitirán expandir la advertencia para mostrar las solicitudes específicas que están causando el error. También puede probar un complemento gratuito como SSL Insecure Content Fixer, que intentará corregir los complementos de terceros que no hayan podido hacer esto.
En este punto, debería ver el candado verde en la barra de URL cuando visite su sitio web. Si no está utilizando un complemento de comercio electrónico como WooCommerce o WP eCommerce, ¡ya está! Si es así, hay un último paso importante.
Obtener SSL flexible para trabajar con complementos de comercio electrónico
WordPress tiene una función central llamada is_SSL()
en la que se basan los complementos para determinar si el tráfico está encriptado con SSL. Solo con el método anterior, esta función devolverá false
porque el cifrado es solo entre CloudFlare y el cliente. El tráfico con el que interactúa PHP no está cifrado, por lo que el superglobal que comprueba esa función (es decir, $_SERVER['HTTPS']
) no sería útil. Para nuestro propósito, la variable relevante es $_SERVER['HTTP_X_FORWARDED_PROTO']
, que, en el momento de escribir este artículo, WordPress no reconoce. La solicitud para cambiar esto es de larga data, pero aún no se ha resuelto.
Afortunadamente , un complemento gratuito solucionará esto de inmediato, CloudFlare Flexible SSL. Simplemente instale el complemento y actívelo. Recuerda que esta técnica no añade más seguridad . El tráfico entre CloudFlare y el servidor de su sitio web aún no está cifrado y, por lo tanto, aún es vulnerable a la detección.
SSL flexible no es SSL completo
La iniciativa “Universal SSL” de CloudFlare es un intento interesante de hacer que Internet sea más seguro, pero no está exento de controversia. La principal preocupación es que el SSL flexible no encripta la segunda mitad del viaje del tráfico (hacia su servidor), pero el navegador todavía muestra el mismo candado verde que asociamos con el SSL completo . CloudFlare ofrece la siguiente justificación en su blog:
Tener un cifrado de última generación puede no parecer importante para un blog pequeño, pero es fundamental para avanzar en el futuro cifrado de forma predeterminada de Internet. Cada byte, por aparentemente mundano que parezca, que fluye encriptado a través de Internet hace que sea más difícil para aquellos que desean interceptar, limitar o censurar la web. En otras palabras, asegurarse de que su blog personal esté disponible a través de HTTPS hace que sea más probable que una organización de derechos humanos, un servicio de redes sociales o un periodista independiente sean accesibles en todo el mundo. Juntos podemos hacer grandes cosas.
Para bien o para mal, SSL flexible está aquí, e Internet tendrá que adaptarse. Mientras tanto, la carga recae en los propietarios de sitios web para ser educados y tomar decisiones responsables.
Redirigir solicitudes HTTP a HTTPS
Permitir que un sitio web se ejecute en HTTPS no garantiza que las solicitudes realmente utilicen el protocolo. Si su sitio web ha existido por un tiempo, es posible que los usuarios ya lo hayan marcado con HTTP. Puede redirigir todas las solicitudes HTTP al nuevo protocolo agregando el siguiente fragmento en la parte superior del archivo .htaccess
en la raíz de su sitio web. Si el archivo no existe, puede agregarlo de forma segura.
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule (.*) https://yourdomain.com/$1 [R=301,L] </IfModule>
Si ya existe un archivo .htaccess
, tenga cuidado de no cambiar nada entre las líneas # BEGIN WordPress
y # END WordPress
en ese archivo. Esas líneas son administradas por WordPress, y cada vez que se actualizan los enlaces permanentes, el contenido de esa sección se sobrescribe.
Felicidades
Al actualizar su sitio web a HTTPS, ha mejorado su sitio web, protegido a los usuarios y participado en el avance de Internet. ¡Y no te costó nada!