Cómo Instalar un Certificado SSL en Tu Sitio WordPress
Un certificado SSL (Secure Sockets Layer / TLS) es un enlace de protocolo criptográfico que cifra los datos en tránsito entre un servidor web y un navegador. En un sitio WordPress, instalar SSL significa que cada solicitud HTTP se redirige a HTTPS, el navegador muestra un candado, y los datos sensibles — credenciales de inicio de sesión, envíos de formularios, datos de pago — viajan a través de un canal cifrado en lugar de texto sin formato.
Para WordPress específicamente, la instalación de SSL implica tres capas distintas: aprovisionar el certificado a nivel de servidor o alojamiento, configurar WordPress para servir todos los recursos sobre HTTPS, y eliminar las advertencias de contenido mixto que rompen silenciosamente el contexto seguro. Si omite cualquiera de estas capas, su sitio mostrará un candado roto, activará advertencias de seguridad del navegador, o fallará completamente en la validación HTTPS.
Paso 1: Elija el Tipo de Certificado SSL Correcto
No todos los certificados SSL ofrecen el mismo nivel de validación o señal de confianza. Seleccionar el tipo incorrecto es un error común que desperdicia dinero o, en el sentido contrario, protege insuficientemente un sitio que maneja transacciones sensibles.
Comparación de Niveles de Validación
| Tipo de Certificado | Nivel de Validación | Tiempo de Emisión | Ideal Para | Señal de Confianza del Navegador |
|---|---|---|---|---|
| — | — | — | — | — |
| **Domain Validated (DV)** | Solo propiedad del dominio | Minutos a horas | Blogs, sitios personales, entornos de desarrollo | Icono de candado |
| **Organization Validated (OV)** | Dominio + entidad legal | 1–3 días hábiles | Sitios empresariales, portales SaaS | Candado + detalles de la organización en el certificado |
| **Extended Validation (EV)** | Verificación legal y operativa completa | 1–5 días hábiles | E-commerce, banca, portales de alta confianza | Candado + nombre de la organización (algunos navegadores) |
| **Wildcard DV/OV** | Dominio + todos los subdominios | Minutos a días | Implementaciones con múltiples subdominios | Candado |
| **Multi-Domain (SAN)** | Múltiples dominios distintos | Minutos a días | Agencias que gestionan múltiples propiedades | Candado |
SSL Gratuito vs. de Pago
Let's Encrypt emite certificados DV gratuitos y automatizados válidos por 90 días con soporte de renovación automática mediante el protocolo ACME. Es de confianza para todos los navegadores principales y es la opción correcta para la gran mayoría de los sitios WordPress. El corto período de validez es intencional — fuerza la automatización y reduce la ventana de riesgo de un certificado comprometido.
El SSL gratuito de Cloudflare funciona de manera diferente: cifra la conexión entre el visitante y el borde de Cloudflare, pero la conexión entre Cloudflare y su servidor de origen puede seguir sin cifrar a menos que configure el modo Full (Strict) con un certificado de origen válido. Este es un caso límite frecuentemente malentendido que crea una falsa sensación de seguridad.
Los certificados de pago de CAs comerciales (DigiCert, Sectigo, GlobalSign) son necesarios cuando necesita validación OV o EV, una garantía, o una configuración específica de SAN/Wildcard no compatible con Let's Encrypt.
Si necesita adquirir un certificado de confianza para su dominio, AlexHost ofrece Certificados SSL con emisión y gestión sencillas directamente desde el panel de su cuenta.
Paso 2: Instale el Certificado SSL a Nivel de Alojamiento
El certificado debe instalarse en el servidor web antes de que WordPress pueda servir respuestas HTTPS. El método depende de su entorno de alojamiento.
Instalación de SSL mediante cPanel (Alojamiento Compartido y VPS)
cPanel es el panel de control más común para entornos compartidos y gestionados. Si su proveedor utiliza AutoSSL (respaldado por Sectigo) o admite Let's Encrypt de forma nativa, un solo clic aprovisiona y renueva el certificado automáticamente.
Pasos de instalación manual cuando tiene archivos de certificado de una CA:
- Inicie sesión en cPanel y navegue a Seguridad > SSL/TLS.
- Haga clic en Administrar Sitios SSL.
- Seleccione el dominio de destino en el menú desplegable.
- Pegue el contenido de tres archivos en los campos correspondientes:
- Certificado (CRT): El certificado firmado de su CA.
- Clave Privada (KEY): Generada durante la creación del CSR — nunca la comparta.
- Paquete de Autoridad Certificadora (CABUNDLE): Los certificados de cadena intermedios.
- Haga clic en Instalar Certificado.
Si está ejecutando WordPress en un VPS con cPanel, AutoSSL generalmente gestiona esto automáticamente para todos los dominios en WHM. Verifique en WHM > SSL/TLS > Administrar AutoSSL que el dominio esté cubierto y que el certificado no esté en estado pendiente o fallido.
Instalación de SSL en un VPS con Apache (Método Manual)
En un VPS Linux autogestionado con Apache, el proceso requiere editar directamente la configuración del host virtual.
Instale Certbot (cliente de Let's Encrypt) en Debian/Ubuntu:
sudo apt update
sudo apt install certbot python3-certbot-apache -yObtenga e instale el certificado automáticamente:
sudo certbot --apache -d yourdomain.com -d www.yourdomain.comCertbot modifica la configuración de su host virtual de Apache, instala el certificado y configura un cron job o temporizador systemd para la renovación automática. Verifique que el temporizador de renovación esté activo:
sudo systemctl status certbot.timerPara Nginx en un VPS:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.comInstalación manual de certificado en Apache (cuando se usa un certificado de CA de pago):
Coloque sus archivos de certificado en un directorio seguro, luego edite su host virtual:
<VirtualHost *:443>
ServerName yourdomain.com
ServerAlias www.yourdomain.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/yourdomain.crt
SSLCertificateKeyFile /etc/ssl/private/yourdomain.key
SSLCertificateChainFile /etc/ssl/certs/yourdomain_ca_bundle.crt
</VirtualHost>Reinicie Apache para aplicar los cambios:
sudo systemctl restart apache2Si está gestionando una instalación WordPress de alto tráfico en un Servidor Dedicado, tiene control total sobre los conjuntos de cifrado, los encabezados HSTS y el OCSP stapling — configuraciones que no son posibles en el alojamiento compartido.
Instalación de SSL en un VPS con Nginx (Método Manual)
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/ssl/certs/yourdomain.crt;
ssl_certificate_key /etc/ssl/private/yourdomain.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 1.1.1.1 valid=300s;
root /var/www/html;
index index.php;
}Recargue Nginx después de editar:
sudo nginx -t && sudo systemctl reload nginxPaso 3: Fuerce HTTPS a Nivel de Servidor con una Redirección 301
Antes de modificar la configuración de WordPress, aplique la redirección de HTTP a HTTPS a nivel de servidor. Esto es más confiable que depender únicamente de WordPress o de un plugin, y evita que el navegador cargue alguna vez la versión HTTP.
Apache: Redirección .htaccess
Abra su archivo .htaccess (ubicado en la raíz de WordPress, normalmente en /var/www/html/.htaccess o accesible mediante el Administrador de Archivos de cPanel) y añada el siguiente bloque encima de las reglas de reescritura existentes de WordPress:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]Error crítico: Si coloca este bloque *después* del marcador # BEGIN WordPress, puede ser sobreescrito por las actualizaciones del núcleo de WordPress. Coloque siempre las reglas de redirección a nivel de servidor por encima del bloque gestionado por WordPress.
Nginx: Redirección de Bloque de Servidor
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
return 301 https://$host$request_uri;
}Encabezado HSTS (Avanzado, Recomendado)
Una vez que esté seguro de que su configuración HTTPS es estable, añada un encabezado HTTP Strict Transport Security para indicar a los navegadores que nunca intenten una conexión HTTP:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"Advertencia: No habilite HSTS con preload hasta estar seguro de que cada subdominio también tiene un certificado SSL válido. La precarga es irreversible a corto plazo y romperá los subdominios que no tengan HTTPS configurado.
Paso 4: Configure WordPress para Servir Todo el Contenido sobre HTTPS
Con el certificado instalado y la redirección a nivel de servidor en su lugar, WordPress debe ser configurado para generar URLs HTTPS para todos los enlaces internos, recursos y endpoints de API.
Opción A: Actualice las URLs del Sitio WordPress Manualmente
- Vaya a Ajustes > General en el panel de administración de WordPress.
- Cambie tanto la Dirección de WordPress (URL) como la Dirección del Sitio (URL) de
http://ahttps://. - Haga clic en Guardar Cambios.
WordPress cerrará su sesión inmediatamente después de guardar. Vuelva a iniciar sesión usando la URL HTTPS.
Opción B: Actualice las URLs mediante wp-config.php
Si no puede acceder al panel de administración o prefiere un enfoque basado en código, añada estas líneas a wp-config.php antes de la línea /* That's all, stop editing! */:
define('WP_HOME', 'https://yourdomain.com');
define('WP_SITEURL', 'https://yourdomain.com');Opción C: Actualice las URLs HTTP Codificadas en la Base de Datos
WordPress almacena URLs en la base de datos, incluyendo datos serializados en las tablas de meta de publicaciones y opciones. Un simple buscar y reemplazar en el SQL sin procesar puede corromper los arrays serializados. Use WP-CLI para un reemplazo seguro con soporte de serialización:
wp search-replace 'http://yourdomain.com' 'https://yourdomain.com' --skip-columns=guid --all-tablesEl indicador --skip-columns=guid preserva los GUIDs de las publicaciones, que no deben modificarse según las mejores prácticas de WordPress. Ejecute esto desde el directorio raíz de WordPress con las credenciales de base de datos apropiadas configuradas en wp-config.php.
Alternativamente, el plugin Better Search Replace realiza la misma operación a través de la interfaz de administración con soporte de serialización.
Paso 5: Corrija las Advertencias de Contenido Mixto
Una advertencia de contenido mixto ocurre cuando una página HTTPS carga uno o más recursos (imágenes, scripts, hojas de estilo, iframes) sobre HTTP. Esto rompe el contexto seguro, suprime el candado y, en algunos casos, hace que los navegadores bloqueen el recurso por completo.
Diagnóstico de Contenido Mixto
Abra las herramientas de desarrollo de su navegador (F12), vaya a la pestaña Consola y busque advertencias con el prefijo Mixed Content:. El mensaje identificará la URL exacta del recurso que causa el problema.
Alternativamente, use la herramienta Why No Padlock? o ejecute un análisis de SSL Labs para obtener un informe completo.
Corrección de Contenido Mixto: Método con Plugin
Really Simple SSL es el plugin más utilizado para este propósito. Tras la activación:
- Establece la variable de servidor
HTTPSpara forzar a WordPress a reconocer la conexión segura. - Añade un filtro de contenido basado en JavaScript para reescribir las URLs HTTP al vuelo.
- Opcionalmente vacía las reglas de reescritura y actualiza la URL del sitio.
SSL Insecure Content Fixer ofrece un control más granular, permitiéndole elegir entre un simple reemplazo de búfer de salida y un enfoque más profundo de hook de filtro de WordPress — útil cuando el método JavaScript de Really Simple SSL causa problemas de renderizado con ciertos constructores de páginas.
Corrección de Contenido Mixto: Método Manual
Para URLs HTTP codificadas en archivos de tema o plugins personalizados, busque en el directorio de su tema:
grep -r "http://yourdomain.com" /var/www/html/wp-content/themes/your-theme/Reemplace todas las ocurrencias con https:// o, mejor aún, use URLs relativas al protocolo (//yourdomain.com/...) para recursos de terceros donde no pueda garantizar la disponibilidad de HTTPS.
Para los medios incrustados subidos antes de la migración SSL, ejecute el comando search-replace de WP-CLI del Paso 4 si aún no lo ha hecho, ya que las URLs de los archivos adjuntos de imágenes se almacenan en las tablas wp_posts y wp_postmeta.
Paso 6: Valide la Instalación SSL
Nunca asuma que la instalación fue exitosa — verifíquela sistemáticamente.
Prueba de SSL Labs
Navegue a https://www.ssllabs.com/ssltest/ e ingrese su dominio. Un sitio WordPress correctamente configurado debería obtener una puntuación de A o A+. Una calificación A+ requiere:
- Soporte de TLS 1.2 y 1.3 con TLS 1.0 y 1.1 deshabilitados.
- Un conjunto de cifrado sólido (sin RC4, sin 3DES).
- Encabezado HSTS presente.
- OCSP stapling habilitado.
- Sin problemas de cadena (certificados intermedios correctamente instalados).
Verificación en el Navegador
Haga clic en el icono de candado en la barra de direcciones. En Chrome, navegue a La conexión es segura > El certificado es válido para confirmar que el emisor, las fechas de validez y los Nombres Alternativos del Sujeto (SANs) coinciden con su dominio.
Verificación por Línea de Comandos
openssl s_client -connect yourdomain.com:443 -servername yourdomain.comEsto muestra la cadena de certificados completa, el cifrado negociado y la versión TLS. Busque Verify return code: 0 (ok) para confirmar que la cadena es de confianza.
Verifique la Expiración del Certificado
echo | openssl s_client -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -datesPara los certificados de Let's Encrypt, verifique también que la prueba de renovación automática funcione:
sudo certbot renew --dry-runPaso 7: Refuerzo Post-Instalación y Limpieza SEO
Actualice Google Search Console
Añada la versión HTTPS de su sitio como una nueva propiedad en Google Search Console. Google trata http:// y https:// como propiedades separadas. Envíe su sitemap HTTPS (https://yourdomain.com/sitemap.xml) para acelerar el rastreo de las URLs actualizadas.
Actualice su Sitemap y las Etiquetas Canónicas
Asegúrese de que su sitemap XML (generado por Yoast SEO, Rank Math o similar) genere exclusivamente URLs HTTPS. Verifique que las etiquetas canónicas en el <head> de su tema hagan referencia a HTTPS. Una etiqueta canónica que apunte a la versión HTTP de una página confundirá a los rastreadores incluso si la redirección 301 está en su lugar.
Notifique a Google del Cambio
En Google Search Console, use la herramienta Cambio de Dirección solo si ha migrado a un dominio completamente nuevo. Para la migración de HTTP a HTTPS en el mismo dominio, las redirecciones 301 gestionan la transferencia de señales — no se necesita la herramienta de cambio de dirección.
Consideraciones para WordPress Multisite
En una red WordPress Multisite, debe actualizar los valores siteurl y home en las tablas wp_siteurl y wp_blogs para cada subsitio, no solo para el sitio principal. WP-CLI gestiona esto por sitio:
wp search-replace 'http://subdomain.yourdomain.com' 'https://subdomain.yourdomain.com' --url=subdomain.yourdomain.com --all-tablesMatriz de Decisión Práctica: Qué Método SSL Usar
| Su Entorno de Alojamiento | Método SSL Recomendado | Renovación | Esfuerzo |
|---|---|---|---|
| — | — | — | — |
| Alojamiento compartido con cPanel | AutoSSL o Let's Encrypt mediante cPanel | Automática | Mínimo |
| [VPS Hosting](https://alexhost.com/es/vps/) con Apache/Nginx | Certbot (Let's Encrypt) | Automática mediante temporizador systemd | Bajo |
| VPS con cPanel/WHM | AutoSSL en WHM | Automática | Mínimo |
| [Servidor Dedicado](https://alexhost.com/es/dedicated-servers/) | Certbot o certificado de CA de pago | Manual o automatizada | Medio |
| Dominio con proxy de Cloudflare | SSL de Cloudflare + certificado de origen | Automática (Cloudflare) | Bajo (pero verifique el modo Full Strict) |
| Sitio de e-commerce / alta confianza | Certificado OV o EV de pago | Renovación manual anual | Alto |
Conclusiones Técnicas Clave
- La instalación del certificado y la configuración de WordPress son pasos separados. Un certificado instalado a nivel de servidor no hace que WordPress genere automáticamente URLs HTTPS. Ambos deben configurarse.
- El contenido mixto es el fallo más común tras la migración. Ejecute un search-replace en la base de datos con WP-CLI antes de activar cualquier plugin SSL para detectar las URLs HTTP codificadas en el origen.
- La renovación automática de Let's Encrypt debe verificarse, no asumirse. Ejecute
certbot renew --dry-rundespués de la configuración inicial y monitoree las fechas de expiración. Una renovación fallida rompe silenciosamente su sitio 90 días después. - HSTS es una puerta de un solo sentido. No establezca un
max-agelargo ni habilitepreloadhasta que cada subdominio tenga un certificado válido y esté comprometido permanentemente con HTTPS. - El SSL gratuito de Cloudflare no está cifrado de extremo a extremo por defecto. Configure el modo SSL/TLS en Full (Strict) e instale un certificado de origen en su servidor para cerrar la brecha.
- En el alojamiento compartido, verifique que el SSL de su proveedor cubra tanto el dominio apex (
yourdomain.com) como el subdominiowww. Un certificado emitido solo para uno producirá un error de discrepancia de nombre en el otro. - Los datos serializados en las bases de datos de WordPress no pueden actualizarse de forma segura con
REPLACE()de SQL sin procesar. Use siempre WP-CLI o un plugin con soporte de serialización.
Para los sitios alojados en Alojamiento Web Compartido, la forma más rápida de obtener SSL es habilitando AutoSSL o Let's Encrypt a través de cPanel — todo el proceso tarda menos de cinco minutos y no requiere acceso a la línea de comandos. Para implementaciones más complejas que requieran configuración personalizada de cifrado, OCSP stapling o certificados multi-dominio, un VPS con un panel de control configurable le proporciona el acceso necesario a nivel de servidor.
Preguntas Frecuentes
¿La instalación de un certificado SSL mejora directamente mi posicionamiento en Google?
Google confirmó HTTPS como señal de posicionamiento en 2014. El impulso directo en el ranking es modesto, pero los beneficios indirectos — menor tasa de rebote por advertencias de seguridad del navegador, elegibilidad para HTTP/2 y HTTP/3, y confianza del usuario — tienen un efecto acumulativo medible en el rendimiento orgánico.
¿Cuál es la diferencia entre SSL y TLS?
SSL (Secure Sockets Layer) es el predecesor obsoleto de TLS (Transport Layer Security). Todos los certificados modernos usan TLS 1.2 o 1.3. El término “certificado SSL” persiste como abreviatura del sector, pero ningún navegador ni servidor ha utilizado SSL real desde 2015. Si su servidor todavía acepta SSLv3 o TLS 1.0, desactívelos inmediatamente — son vulnerables a los ataques POODLE y BEAST respectivamente.
¿Por qué mi sitio sigue mostrando “No es seguro” después de instalar el certificado?
La causa más común es un error de contenido mixto: al menos un recurso en la página se está cargando sobre HTTP. Abra las herramientas de desarrollo del navegador, revise la Consola en busca de advertencias de contenido mixto y use el search-replace de WP-CLI o el plugin Really Simple SSL para reescribir las URLs problemáticas. Una causa secundaria es que la URL del Sitio de WordPress en Ajustes > General todavía apunta a http://.
¿Cómo renuevo un certificado de Let's Encrypt antes de que expire?
Certbot instala un temporizador systemd o un cron job que intenta la renovación automáticamente cuando el certificado está a 30 días de expirar. Para forzar una renovación inmediata, ejecute sudo certbot renew --force-renewal. Para probar sin realizar cambios, ejecute sudo certbot renew --dry-run. Consulte el registro de renovación en /var/log/letsencrypt/letsencrypt.log si la renovación falla.
¿Puedo instalar SSL en WordPress sin acceso al servidor o a cPanel?
Sí, a través de Cloudflare. Añada su dominio a Cloudflare, apunte sus servidores de nombres a los de Cloudflare y habilite la configuración SSL/TLS. El tramo visitante-Cloudflare se cifra inmediatamente. Sin embargo, configure el modo en Full (Strict) e instale un Certificado de Origen de Cloudflare en su servidor para cifrar también el tramo Cloudflare-origen. Sin esto, la conexión entre Cloudflare y su servidor permanece sin cifrar, lo que representa una brecha de seguridad significativa en cualquier sitio que maneje datos de usuarios.
