ERR_SSL_PROTOCOL_ERROR: Cómo Solucionarlo (Chrome, Edge, Todos los Navegadores)

¿Qué es ERR_SSL_PROTOCOL_ERROR?
ERR_SSL_PROTOCOL_ERROR es un error del navegador que ocurre cuando el handshake SSL/TLS entre tu navegador y el servidor web falla. El navegador no puede establecer una conexión cifrada segura, por lo que bloquea la página por completo para protegerte de transmitir datos a través de un canal inseguro.
Cada conexión HTTPS comienza con un handshake TLS — una negociación donde el navegador y el servidor acuerdan un protocolo de cifrado (TLS 1.2 o 1.3), intercambian certificados y verifican la identidad del otro. ERR_SSL_PROTOCOL_ERROR significa que esta negociación falló antes de completarse.
El error no es un código de estado HTTP del servidor — ocurre dentro de tu navegador antes de que se envíe cualquier solicitud HTTP. El código de error subyacente de Chromium es net::ERR_SSL_PROTOCOL_ERROR (código de error -107), definido en el código fuente de Chromium como una falla al negociar un conjunto aceptable de parámetros de seguridad.
Cómo se ve el ERR_SSL_PROTOCOL_ERROR
Chrome y otros navegadores basados en Chromium muestran este error como una advertencia de página completa con el mensaje "This site can't provide a secure connection." (Este sitio no puede proporcionar una conexión segura). Debajo, verás el código de error específico. Estas son las variaciones comunes que podrías encontrar.
ERR_SSL_PROTOCOL_ERROR — el código de error estándar en la barra de direcciones de Chrome
net::ERR_SSL_PROTOCOL_ERROR — el código de error interno completo que se muestra en la consola de Chrome DevTools
This site can't provide a secure connection — el mensaje principal que Chrome muestra al usuario
[dominio] sent an invalid response — el texto de error detallado que Chrome muestra debajo del mensaje principal
ERR_SSL_PROTOCOL_ERROR en todos los navegadores — cuando el error aparece en Chrome, Edge, Brave y Opera simultáneamente (indica un problema del lado del servidor o del sistema completo, no un error específico del navegador)
¿Qué causa ERR_SSL_PROTOCOL_ERROR?
Este error tiene causas tanto del lado del cliente (tu dispositivo) como del lado del servidor (el sitio web). Identificar de qué lado está el problema es el primer paso para solucionarlo. Si el error aparece en todos los sitios web, el problema está de tu lado. Si solo aparece en un sitio web específico, probablemente el problema esté del lado del servidor.
Fecha/hora del sistema incorrecta — La causa #1 del lado del usuario. Los certificados SSL son sensibles al tiempo — si el reloj de tu computadora está mal por apenas unos minutos, la validación del certificado falla y el handshake TLS se interrumpe.
Certificado SSL vencido o inválido — El certificado SSL del sitio web ha vencido, está autofirmado o fue emitido para un dominio diferente. Puedes verificar cualquier certificado al instante con nuestro SSL Checker.
Protocolo TLS obsoleto — El servidor solo soporta protocolos obsoletos (SSL 3.0, TLS 1.0, TLS 1.1) que los navegadores modernos se niegan a usar. Chrome, Edge y Firefox dejaron de soportar TLS 1.0/1.1 en 2020.
Estado SSL del navegador corrupto — Tu navegador tiene datos de sesión SSL antiguos, preferencias HSTS o información de certificados en caché que entran en conflicto con el intento de conexión actual.
Conflicto con el protocolo QUIC — El protocolo experimental QUIC de Chrome (HTTP/3) a veces puede interferir con la negociación TLS en servidores que no lo soportan correctamente.
Escaneo SSL/HTTPS del antivirus — Software de seguridad que intercepta el tráfico HTTPS (Avast, Kaspersky, Bitdefender, ESET) puede romper el handshake TLS al insertar su propio certificado en la conexión.
Cadena de certificados incompleta — El servidor envía su certificado SSL pero no los certificados intermedios necesarios para verificar la cadena de confianza hasta la autoridad certificadora raíz.
Interferencia de VPN o proxy — Las VPN y los proxies corporativos que inspeccionan el tráfico HTTPS pueden corromper el handshake TLS, especialmente al cambiar entre redes.
Extensiones del navegador — Extensiones de privacidad, bloqueadores de anuncios y complementos de seguridad que modifican las solicitudes HTTPS pueden interferir con el handshake SSL.
Firewall bloqueando el puerto 443 — Un firewall de red o router está bloqueando el puerto HTTPS estándar (443), impidiendo que el handshake TLS se complete.
Cómo solucionar ERR_SSL_PROTOCOL_ERROR (Para usuarios)
Si ves este error mientras navegas, comienza con las soluciones más simples primero. La mayoría de los casos se resuelven con las tres primeras soluciones que se indican a continuación.
Solución 1: Verifica la fecha y hora del sistema
Un reloj del sistema incorrecto es la causa más común de ERR_SSL_PROTOCOL_ERROR. Los certificados SSL tienen un período de validez (fechas Not Before / Not After), y si la hora de tu sistema cae fuera de este rango, el handshake falla. Incluso una diferencia de pocos minutos puede causar problemas con la validación estricta de certificados.
Asegúrate de que tu computadora esté configurada para sincronizar la hora automáticamente.
Windows: Configuración → Hora e idioma → Fecha y hora → Activa "Establecer la hora automáticamente" y "Establecer la zona horaria automáticamente"
Mac: Configuración del Sistema → General → Fecha y hora → Activa "Ajustar fecha y hora automáticamente"
Linux: Ejecuta
sudo timedatectl set-ntp truepara habilitar la sincronización NTP
Solución 2: Limpiar el estado SSL (Windows)
Windows mantiene su propia caché de certificados SSL separada del navegador. Las entradas obsoletas o corruptas en esta caché pueden causar ERR_SSL_PROTOCOL_ERROR persistente incluso después de limpiar la caché del navegador.
Para limpiar el estado SSL en Windows: abre Opciones de Internet (búscalo en el menú Inicio o escribe inetcpl.cpl en el cuadro de diálogo Ejecutar) → haz clic en la pestaña Contenido → haz clic en Borrar estado SSL → haz clic en Aceptar. Luego reinicia tu navegador.
Solución 3: Limpiar caché y cookies del navegador
Los datos de caché corruptos o las entradas HSTS (HTTP Strict Transport Security) obsoletas pueden forzar a tu navegador a intentar conexiones con parámetros desactualizados, lo que provoca el error de protocolo SSL.
Paso 1: Abre Configuración de Chrome → Privacidad y seguridad → Borrar datos de navegación (o presiona
Ctrl+Shift+Delete)Paso 2: Cambia a la pestaña Avanzado
Paso 3: Establece el rango de tiempo en Todos los tiempos
Paso 4: Marca Imágenes y archivos en caché, Cookies y otros datos de sitios y Datos de aplicaciones alojadas
Paso 5: Haz clic en Borrar datos y reinicia Chrome
Para un solo sitio, también puedes borrar solo los datos de ese sitio: ve a chrome://settings/content/all → busca el dominio → haz clic en el ícono de la papelera.
Solución 4: Desactivar el protocolo QUIC
Chrome usa el protocolo QUIC (HTTP/3 sobre UDP) de forma predeterminada para conexiones más rápidas. Sin embargo, algunos servidores, firewalls y equipos de red no manejan QUIC correctamente, lo que puede causar fallos en el handshake SSL. Desactivar QUIC obliga a Chrome a usar conexiones TLS estándar basadas en TCP.
Paso 1: Escribe
chrome://flags/#enable-quicen la barra de direccionesPaso 2: Encuentra Experimental QUIC protocol
Paso 3: Cámbialo de Default a Disabled
Paso 4: Haz clic en Relaunch para reiniciar Chrome
Si el error desaparece después de desactivar QUIC, el problema está en la implementación HTTP/3 del servidor o en tu red bloqueando el puerto UDP 443. Puedes dejar QUIC desactivado sin efectos negativos — las páginas se cargarán mediante HTTPS estándar (HTTP/2 sobre TCP).
Solución 5: Desactivar extensiones del navegador
Las extensiones que interceptan o modifican el tráfico web — bloqueadores de anuncios, extensiones VPN, escudos de privacidad y HTTPS Everywhere — pueden interferir con el handshake TLS. Algunas extensiones inyectan sus propios certificados o modifican las cabeceras de las solicitudes de formas que rompen la negociación SSL.
Ve a chrome://extensions/, desactiva todas las extensiones y recarga la página. Si el error desaparece, reactiva las extensiones una por una para encontrar la culpable. Los causantes más comunes son: uBlock Origin (raramente), Avast Online Security, Norton Safe Web y HTTPS Everywhere.
Solución 6: Desactivar el escaneo SSL/HTTPS del antivirus
Muchos programas antivirus (Avast, Kaspersky, Bitdefender, ESET, Norton) incluyen una función de "escaneo HTTPS" o "inspección SSL" que intercepta las conexiones cifradas actuando como un proxy man-in-the-middle. Esto puede romper los handshakes TLS, especialmente con sitios que usan certificate pinning o funciones más recientes de TLS 1.3.
Busca configuraciones llamadas Web Shield, HTTPS Scanning, SSL Scanning o Encrypted connections scanning en tu antivirus y desactívalas temporalmente. Si el error se resuelve, puedes agregar el dominio afectado a la lista de exclusiones de tu antivirus.
Solución 7: Actualiza tu navegador
Las versiones más antiguas del navegador pueden no soportar los protocolos TLS o los conjuntos de cifrado requeridos por los sitios web modernos. Chrome actualiza regularmente sus requisitos de seguridad — por ejemplo, Chrome 98 dejó de soportar TLS 1.0 y 1.1 por completo.
Actualiza Chrome: ve a chrome://settings/help o Menú → Ayuda → Acerca de Google Chrome. Chrome descarga las actualizaciones automáticamente pero requiere un reinicio para aplicarlas. Para Edge: edge://settings/help. Para Firefox: Menú → Ayuda → Acerca de Firefox.
Solución 8: Vaciar la caché DNS
Los registros DNS obsoletos pueden dirigir tu navegador al servidor incorrecto o a una dirección IP antigua que ya no tiene un certificado SSL válido. Vaciar la caché DNS fuerza una nueva consulta DNS.
# Windows (Command Prompt as Admin)
ipconfig /flushdns
# macOS
sudo dscacheutil -flushcache && sudo killall -HUP mDNSResponder
# Linux
sudo systemd-resolve --flush-caches
# Chrome internal DNS cache
# Visit chrome://net-internals/#dns → Click "Clear host cache"Después de vaciar la caché, verifica que el dominio resuelva a la IP correcta usando la herramienta DNS Lookup de DNS Robot. Si la dirección IP se ve incorrecta, es posible que el sitio web haya cambiado de proveedor de hosting y el DNS aún no se haya propagado completamente.
Solución 9: Prueba en modo incógnito / privado
El modo incógnito inicia con un estado limpio del navegador — sin datos en caché, sin cookies, sin extensiones (a menos que las hayas permitido explícitamente en modo incógnito). Si el sitio web carga en modo incógnito pero no en modo normal, el problema lo causa una extensión del navegador, datos en caché o un perfil del navegador corrupto.
Abre una ventana de incógnito: Ctrl+Shift+N (Chrome/Edge) o Ctrl+Shift+P (Firefox). Navega al mismo sitio web. Si carga correctamente, limpia la caché de tu navegador (Solución 3) o revisa las extensiones (Solución 5).
Solución 10: Desactivar VPN o proxy
Las VPN y los proxies HTTP se sitúan entre tu navegador y el servidor web. Algunas VPN inspeccionan el tráfico HTTPS, inyectan sus propios certificados o enrutan las conexiones a través de servidores con SSL mal configurado. Los proxies corporativos frecuentemente usan intercepción SSL (similar al escaneo HTTPS del antivirus) que puede romper los handshakes TLS.
Desconecta temporalmente tu VPN e intenta cargar el sitio web. Si funciona sin la VPN, el problema está en cómo tu VPN maneja las conexiones SSL. Prueba un servidor VPN diferente o contacta a tu proveedor de VPN.
Solución 11: Restablecer la configuración de red (último recurso)
Si nada más funciona, restablece tu pila de red. Esto borra todas las configuraciones de red personalizadas y devuelve todo a los valores predeterminados — incluyendo configuraciones DNS, configuraciones de proxy y conexiones de socket.
# Windows (Command Prompt as Admin)
netsh winsock reset
netsh int ip reset
ipconfig /release
ipconfig /renew
ipconfig /flushdns
# Then restart your computer
# macOS — reset DNS settings
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
# Linux — restart NetworkManager
sudo systemctl restart NetworkManagerCómo solucionar ERR_SSL_PROTOCOL_ERROR (Para propietarios de sitios web)
Si varios usuarios reportan ERR_SSL_PROTOCOL_ERROR en tu sitio web, el problema está del lado del servidor. Las causas más comunes del lado del servidor son certificados vencidos, certificados intermedios faltantes y configuraciones TLS obsoletas.
Verifica tu certificado SSL
El primer paso es verificar que tu certificado SSL sea válido, esté correctamente instalado y no haya vencido. Usa el SSL Checker de DNS Robot para verificar instantáneamente el estado del certificado, la fecha de vencimiento, el emisor y la cadena de certificados.
Problemas comunes de certificados que causan ERR_SSL_PROTOCOL_ERROR:
Certificado vencido — Los certificados de Let's Encrypt vencen cada 90 días. Si la renovación automática falló (cron de certbot no ejecutándose, desafío DNS roto), tu certificado vence silenciosamente.
Dominio incorrecto — El certificado fue emitido para
example.compero el sitio se sirve enwww.example.com(o viceversa). El certificado debe coincidir con el dominio exacto o incluir un comodín (*.example.com).Certificado autofirmado — Los certificados de desarrollo no son confiables para los navegadores en producción.
Certificado revocado — La autoridad certificadora revocó el certificado (por compromiso de la clave, emisión incorrecta o cambio de propietario del dominio).
# Check certificate from command line
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -dates -subject -issuer
# Check certificate chain completeness
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | grep -E "(depth|verify)"
# Renew Let's Encrypt certificate
sudo certbot renew --force-renewalHabilita TLS 1.2 y TLS 1.3
Todos los navegadores modernos requieren al menos TLS 1.2. Si tu servidor solo soporta TLS 1.0 o 1.1, los navegadores se negarán a conectarse y mostrarán ERR_SSL_PROTOCOL_ERROR. TLS 1.3 es el estándar más reciente y significativamente más rápido que TLS 1.2 — habilita ambos para máxima compatibilidad y rendimiento.
# Nginx — ssl_protocols in nginx.conf or site config
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
# Apache — in httpd.conf or ssl.conf
SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256
SSLHonorCipherOrder onDespués de actualizar tu configuración TLS, reinicia tu servidor web (sudo systemctl restart nginx o sudo systemctl restart apache2) y verifica con el SSL Checker de DNS Robot que los protocolos estén activos.
Instala la cadena de certificados completa
Una cadena de certificados incompleta es una causa común pero difícil de diagnosticar de ERR_SSL_PROTOCOL_ERROR. Tu servidor debe enviar no solo tu certificado SSL, sino también los certificados intermedios que conectan tu certificado con la autoridad certificadora raíz de confianza. Sin ellos, algunos navegadores y dispositivos no pueden verificar el certificado.
La mayoría de las autoridades certificadoras proporcionan un archivo de "paquete CA" o "cadena completa". Para Let's Encrypt, usa fullchain.pem (no solo cert.pem). Para otras CAs, descarga el certificado intermedio de su documentación y concatena con tu certificado.
# Nginx — use fullchain, not just cert
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
# Apache
SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pemVerifica la configuración de HSTS
HSTS (HTTP Strict Transport Security) le indica a los navegadores que siempre usen HTTPS para tu dominio. Si tu política HSTS tiene un max-age largo y tu certificado SSL se rompe después, los navegadores se negarán a conectarse — no pueden volver a HTTP, y el HTTPS roto provoca ERR_SSL_PROTOCOL_ERROR.
Verifica tu encabezado HSTS con la herramienta HTTP Headers de DNS Robot. Si estableciste un max-age muy largo (como 2 años) y tu certificado venció, los usuarios que visitaron previamente tu sitio quedan bloqueados en HTTPS sin alternativa. Para solucionarlo, primero repara tu certificado SSL, y entonces los navegadores se conectarán normalmente de nuevo.
Verifica la configuración del servidor
Los servidores web mal configurados pueden causar ERR_SSL_PROTOCOL_ERROR incluso con un certificado válido. Los errores comunes de configuración del servidor incluyen:
Puerto incorrecto — SSL/TLS debe estar en el puerto 443. Si tu servidor escucha en un puerto diferente, los navegadores pueden fallar en el handshake.
HTTP/HTTPS mezclado — Servir algunos recursos por HTTP en una página HTTPS provoca advertencias de contenido mixto y puede romper el handshake para los sub-recursos.
SNI (Server Name Indication) no configurado — Si varios dominios comparten una dirección IP, el servidor debe soportar SNI para servir el certificado correcto para cada dominio.
Incompatibilidad de conjuntos de cifrado — El servidor solo soporta conjuntos de cifrado que el navegador no acepta. Usa cifrados modernos fuertes como AES-GCM y ChaCha20.
Usa el HTTP Headers Checker de DNS Robot para inspeccionar las cabeceras de respuesta de tu servidor y verificar que tu configuración SSL esté enviando las cabeceras correctas.
ERR_SSL_PROTOCOL_ERROR en Android
Los usuarios de Android encuentran ERR_SSL_PROTOCOL_ERROR tanto en Chrome para Android como en aplicaciones basadas en WebView. Las soluciones difieren ligeramente del escritorio porque Android administra los certificados y la configuración de red de manera diferente.
Verifica la fecha y hora — Configuración → Sistema → Fecha y hora → Activa "Fecha y hora automáticas" y "Zona horaria automática"
Borra los datos de Chrome — Configuración → Aplicaciones → Chrome → Almacenamiento → Borrar caché (luego Borrar datos si limpiar la caché no ayudó)
Actualiza Chrome — Abre Google Play Store → Mis aplicaciones → Actualiza Chrome a la versión más reciente
Borrar credenciales de red — Configuración → Seguridad → Borrar credenciales (esto elimina todos los certificados instalados por el usuario)
Restablecer la configuración de red — Configuración → Sistema → Opciones de restablecimiento → Restablecer Wi-Fi, datos móviles y Bluetooth
Para aplicaciones WebView — Los desarrolladores deben asegurarse de que
android:usesCleartextTraffic="false"esté configurado y que la configuración de seguridad de red confíe en las autoridades certificadoras correctas
ERR_SSL_PROTOCOL_ERROR en otros navegadores
ERR_SSL_PROTOCOL_ERROR es un código de error específico de Chromium. Otros navegadores muestran mensajes de error diferentes para la misma falla subyacente del handshake SSL.
| Navegador | Mensaje de error | Código de error |
|---|---|---|
| Chrome / Edge / Brave / Opera | This site can't provide a secure connection | ERR_SSL_PROTOCOL_ERROR |
| Firefox | Secure Connection Failed | SSL_ERROR_RX_MALFORMED_HANDSHAKE |
| Safari | Safari can't establish a secure connection | No se muestra código específico |
| Internet Explorer | This page can't be displayed | Activa TLS 1.0, 1.1, 1.2 en Opciones de Internet |
Si el error aparece en todos los navegadores simultáneamente, el problema es del sistema completo (fecha/hora incorrecta, antivirus, red) o del lado del servidor (certificado vencido, configuración TLS incorrecta). Si solo aparece en un navegador, el problema es específico de ese navegador — intenta limpiar la caché y el estado SSL de ese navegador.
ERR_SSL_PROTOCOL_ERROR en localhost (Desarrolladores)
Los desarrolladores encuentran frecuentemente localhost sent an invalid response. ERR_SSL_PROTOCOL_ERROR al ejecutar servidores de desarrollo locales. Esto sucede porque tu navegador espera un certificado SSL válido para las conexiones HTTPS, pero localhost usa un certificado autofirmado o ningún certificado.
Usa HTTP para desarrollo local — Cambia
https://localhost:3000ahttp://localhost:3000a menos que necesites específicamente HTTPSGenera un certificado local — Usa mkcert para crear certificados SSL de confianza local:
mkcert -install && mkcert localhost 127.0.0.1Node.js — Establece
NODE_TLS_REJECT_UNAUTHORIZED=0solo para desarrollo (nunca en producción)Flag de Chrome — Escribe
chrome://flags/#allow-insecure-localhosty habilita "Allow invalid certificates for resources loaded from localhost"Next.js / Vite / Webpack — Estos frameworks soportan flags
--httpsque generan automáticamente certificados de desarrollo
Códigos de error SSL/TLS relacionados
Chrome tiene varios códigos de error relacionados con SSL. Todos indican diferentes problemas con el handshake TLS o los certificados.
| Código de error | Qué significa | Causa común |
|---|---|---|
| ERR_SSL_PROTOCOL_ERROR | El handshake TLS falló por completo | Fecha/hora incorrecta, incompatibilidad de versión TLS, conflicto QUIC |
| ERR_SSL_VERSION_OR_CIPHER_MISMATCH | No hay versión TLS o conjunto de cifrado compartido | El servidor usa TLS 1.0/1.1 obsoleto, cifrados débiles |
| ERR_CERT_AUTHORITY_INVALID | Certificado no firmado por una CA de confianza | Certificado autofirmado, intermedio faltante, raíz vencida |
| ERR_CERT_DATE_INVALID | Certificado vencido o aún no válido | Certificado vencido, reloj del sistema incorrecto |
| ERR_CERT_COMMON_NAME_INVALID | El dominio del certificado no coincide con la URL | Certificado para example.com, sitio en www.example.com |
| ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN | Falló la validación de certificate pinning | El sitio usa HPKP y el certificado cambió |
Para todos los errores SSL, puedes diagnosticar rápidamente el problema usando el SSL Checker de DNS Robot — muestra el estado del certificado, la completitud de la cadena, las versiones TLS soportadas y la fecha de vencimiento en un solo escaneo.
Verifica tu certificado SSL ahora
Usa el SSL Checker gratuito de DNS Robot para verificar instantáneamente el estado del certificado, la fecha de vencimiento, la cadena de certificados y el soporte de protocolos TLS. Diagnostica ERR_SSL_PROTOCOL_ERROR en segundos.
Try SSL CheckerFrequently Asked Questions
ERR_SSL_PROTOCOL_ERROR significa que tu navegador no pudo establecer una conexión TLS/SSL segura con el sitio web. El handshake TLS — donde el navegador y el servidor negocian el cifrado — falló antes de completarse. Es un error del lado del cliente, no un código de estado HTTP del servidor.