Gracias al proyecto Let’s Encrypt y a WordPress hoy es muy fácil migrar su sitio de http a https (versión segura del protocolo http). El siguiente procedimiento funciona también para aquellos sitios que están detrás de un proxy reverso como NGINX y la conexión del proxy al sitio en cuestión se realiza vía http, incluso si no puede modificar la configuración del servidor web, primero veamos algunos conceptos y definiciones:
Conceptos y definiciones
WordPress es un adminitrador de contenido desarrollado en PHP y MySql con una aquitectura basada en plugins y temas. WordPress es desarrollado y mantenido por cientos de desarrolladores alrededor del mundo.
Let’s Encrypt es una autoridad de certificación abierta, libre y automatizada, lanzada el 12 de abril de 2016, que proporciona certificados de seguridad (a nivel TLS) X.509 gratuitos. Let’s Encrypt elimina el complejo proceso de creación manual, validación, firma, instalación y renovación de los certificados seguridad.
SSL / TLS (Secure Socket Layer / Transport Layer Security): son protocolos criptográficos que permiten establecer un canal de comunicación segura en Internet: web, correo, fax y mensajería instantánea
CA (Certificate Authoritative): entidad reconocida a nivel mundial encargada de generar certificados de seguridad para terceros.
Nota: Antes de ejecutar los siguientes pasos realice una copia de seguridad de su BD, antes de ejecutar el siguiente procedimiento en un ambiente de producción ejecútelo en una versión de prueba de su sitio original, LibreByte no se responsabiliza por cualquier daño o pérdida de datos que pudiera derivarse del siguiente procedimiento.
Paso 1. Modificar wp-config
wp-config es el fichero de configuración de WordPress y el segundo fichero en cargarse después del fichero index.php por eso pondremos el siguiente código antes de cualquier código PHP.
<?php
// Check if a redirect is needed
$redirect = !isset($_SERVER['HTTPS']) || ('on' != $_SERVER['HTTPS']);
$redirect = $redirect || !isset($_SERVER['HTTP_X_FORWARDED_PROTO']) || ('https' != $_SERVER['HTTP_X_FORWARDED_PROTO']);
// Permanent redirect to https version
if ($redirect) {
header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], true, 301);
exit();
}
La variable $_SERVER['HTTPS']
tiene un valor no vacío si la petición es de tipo HTTPS, la variable $_SERVER['HTTP_X_FORWARDED_PROTO']
toma el valor de https cuando su sitio está detrás de un proxy reverso, compruebe que valor toman esta variables (debido a que sus valores puede variar en dependencia del proxy reverso y del servidor web) creando un fichero de prueba y que esté accesible vía https y en el mismo ponga el siguiente código:
var_dump($_SERVER);
Paso 2. Actualizar la tabla prefijo_posts
Conéctese a la BD de WordPress y busque la tabla posts esta tabla debe tener un prefijo definido en la variable $table_prefix del fichero wp-config.php, una vez conectado a la BD de WordPress ejecute la siguiente consulta
UPDATE tableprefix_posts
SET
post_content = REPLACE(post_content, 'http://www.midominio.com', 'https://www.midominio.com'),
post_excerpt = REPLACE(post_content, 'http://www.midominio.com', 'https://www.midominio.com')
WHERE post_content LIKE '%http://www.midominio.com%' OR post_excerpt LIKE '%http://www.midominio.com%'
La consulta anterior actualizará todas las referencias no segura a sus versiones seguras.