NexaTech Studio

Guía técnica · NexaTech

Error de certificado SSL: qué significa cada aviso y cómo resolverlo

Qué significa cada error de certificado SSL que muestran Chrome y Firefox, cómo diagnosticarlo con openssl y curl en cinco minutos y cómo arreglarlo para que no vuelva.

admin

·

29 de octubre de 2026

Respuesta corta: Un error de certificado SSL aparece cuando el navegador no puede confirmar que la web es quien dice ser: el certificado ha caducado, no es para ese dominio, lo ha firmado alguien en quien el navegador no confía o falta un certificado intermedio. El código del error (NET::ERR_CERT_DATE_INVALID, ERR_CERT_COMMON_NAME_INVALID…) te dice cuál de los cuatro es. Con openssl s_client lo confirmas en un minuto, y casi siempre se arregla renovando o reinstalando el certificado con su cadena completa.

Qué comprueba el navegador

Cada vez que alguien abre tu web por HTTPS, el navegador recibe el certificado del servidor y comprueba cuatro cosas antes de mostrar la página. Si falla cualquiera, verás un error de certificado SSL:

  1. Fechas: que hoy esté entre la fecha de emisión y la de caducidad.
  2. Nombre: que el dominio que se ha escrito en la barra esté en la lista de nombres del certificado (el campo Subject Alternative Name). tudominio.com y www.tudominio.com son nombres distintos.
  3. Cadena de confianza: que el certificado lo haya firmado una autoridad (CA) en la que confía el sistema, normalmente a través de un certificado intermedio que el servidor también debe enviar.
  4. Estado y protocolo: que el certificado no esté revocado y que servidor y navegador se entiendan en una versión de TLS segura.

Si falla cualquiera, el navegador corta y muestra la pantalla roja de «La conexión no es privada». El visitante no ve tu web, y Google tampoco la rastrea con normalidad. Para una tienda o una web que capta clientes, es una caída a todos los efectos.

Qué significa cada error de certificado SSL

Los códigos cambian un poco según el navegador. Esta tabla agrupa los más habituales:

Chrome / EdgeFirefoxQué pasaDónde mirarlo
NET::ERR_CERT_DATE_INVALIDSEC_ERROR_EXPIRED_CERTIFICATECertificado caducado (o reloj del equipo mal)Certificado caducado
NET::ERR_CERT_COMMON_NAME_INVALIDSSL_ERROR_BAD_CERT_DOMAINEl certificado no es para ese dominioMás abajo, en «El nombre no coincide»
NET::ERR_CERT_AUTHORITY_INVALIDSEC_ERROR_UNKNOWN_ISSUERFalta el intermedio, o la CA no es de confianzaFalta el certificado intermedio
NET::ERR_CERT_AUTHORITY_INVALIDMOZILLA_PKIX_ERROR_SELF_SIGNED_CERTCertificado autofirmadoMás abajo, en «Autofirmado»
NET::ERR_CERT_REVOKEDSEC_ERROR_REVOKED_CERTIFICATELa CA ha revocado el certificadoPide uno nuevo
ERR_SSL_PROTOCOL_ERRORSSL_ERROR_RX_RECORD_TOO_LONGEl puerto 443 no habla TLS bien (a menudo, sirve HTTP)Configuración del servidor
ERR_SSL_VERSION_OR_CIPHER_MISMATCHSSL_ERROR_NO_CYPHER_OVERLAPSolo admite TLS antiguo o no hay certificado para ese nombreConfiguración del servidor o del CDN
«No es seguro» en la barra, sin pantalla rojaCandado tachadoLa web va por HTTP o carga contenido mixtoWeb «No es seguro»

Si usas Cloudflare, hay dos errores propios que conviene conocer: el 525 (Cloudflare no consigue negociar TLS con tu servidor) y el 526 (el certificado de tu servidor no es válido y tienes el modo «Full (strict)»). En los dos casos el problema está en el servidor de origen, no en Cloudflare.

Cómo saber qué te pasa en cinco minutos

1. Desde el navegador

Pulsa en el aviso de la barra de direcciones y abre el certificado. Verás a quién se emitió, quién lo emitió y hasta cuándo es válido. Es suficiente para los casos de caducidad y de nombre. Para el resto, mejor la terminal.

2. Con openssl

Este comando enseña los datos que importan del certificado que entrega el servidor:

openssl s_client -connect tudominio.com:443 -servername tudominio.com </dev/null 2>/dev/null |
  openssl x509 -noout -subject -issuer -dates -ext subjectAltName

Salida típica:

subject=CN=tudominio.com
issuer=C=US, O=Let's Encrypt, CN=R11
notBefore=Sep 12 08:14:03 2026 GMT
notAfter=Dec 11 08:14:02 2026 GMT
X509v3 Subject Alternative Name:
    DNS:tudominio.com, DNS:www.tudominio.com

El -servername es importante: en servidores con muchas webs, sin él te devuelven el certificado por defecto, que no es el tuyo.

Para ver si la cadena valida y si el nombre coincide:

openssl s_client -connect tudominio.com:443 -servername tudominio.com -verify_hostname tudominio.com </dev/null 2>/dev/null | grep 'Verify return code'
CódigoSignificado
0 (ok)Todo correcto
10 (certificate has expired)Caducado
18 (self-signed certificate)Autofirmado
19 (self-signed certificate in certificate chain)La cadena termina en una raíz que no está en el almacén de confianza
20 (unable to get local issuer certificate)No encuentra quién firmó el certificado: normalmente falta el intermedio
21 (unable to verify the first certificate)Falta el intermedio (el servidor solo envía el certificado final)
62 (hostname mismatch)El certificado no es para ese nombre

3. Con curl

curl -sSI https://tudominio.com
curl: (60) SSL certificate problem: unable to get local issuer certificate

curl no completa cadenas por su cuenta ni admite excepciones, así que es un buen chivato: si curl falla y tu navegador no, casi seguro que falta el intermedio.

4. Prueba las dos variantes del dominio

Repite todo con y sin www. Es muy habitual tener un certificado que cubre una de las dos y no la otra, y que la web solo falle cuando alguien escribe la dirección «como no es».

Cómo resolver cada error

Caducado

Es el más frecuente. Lo habitual es que la renovación automática haya fallado en silencio: Let’s Encrypt no puede validar el dominio porque el DNS ha cambiado, el puerto 80 está cerrado o el panel del hosting dejó de renovar. A veces el certificado sí se renovó, pero el servidor web no se ha recargado y sigue sirviendo el antiguo. Tienes el paso a paso en certificado SSL caducado: cómo renovarlo.

Si el certificado está en vigor y el error aparece solo en un equipo, mira la fecha y hora de ese equipo. Un reloj desajustado produce exactamente el mismo error.

El nombre no coincide

Causas típicas:

  • El certificado cubre tudominio.com pero no www.tudominio.com (o al revés).
  • La web está en un hosting compartido que, para ese nombre, entrega el certificado por defecto del servidor (*.servidor-del-hosting.com).
  • Has añadido un dominio o subdominio nuevo y no se ha incluido en el certificado.
  • Un comodín *.tudominio.com cubre blog.tudominio.com, pero no tudominio.com ni a.b.tudominio.com.

Solución: emite un certificado que incluya todos los nombres que se usan. Con certbot y Nginx:

certbot --nginx -d tudominio.com -d www.tudominio.com

En Plesk o cPanel, marca las dos variantes al emitir el certificado de Let’s Encrypt (o comprueba que AutoSSL las cubre).

Falta el certificado intermedio

El servidor envía solo tu certificado y no el intermedio que lo une con la raíz. Muchos navegadores de escritorio lo disimulan; muchos móviles, apps, curl y conexiones entre servidores, no. Por eso «a mí me funciona» es tan común en este caso. Se arregla instalando la cadena completa (en certbot, fullchain.pem en lugar de cert.pem). Detalle en falta el certificado intermedio.

Autofirmado

El certificado no lo ha emitido ninguna autoridad; lo generó el propio servidor. Pasa cuando el panel instala uno provisional, cuando alguien copia la configuración de un entorno de pruebas o cuando la renovación ha fallado y el servidor ha vuelto al certificado de serie. No tiene arreglo «de configuración»: hay que instalar un certificado de una CA reconocida. Let’s Encrypt o el certificado gratuito del panel del hosting son suficientes para la inmensa mayoría de webs.

Revocado

La CA lo ha anulado antes de tiempo, normalmente porque se pidió (por ejemplo, tras exponer la clave privada) o porque la propia CA detectó un fallo al emitirlo. Emite uno nuevo con clave nueva.

ERR_SSL_PROTOCOL_ERROR y fallos de protocolo

El puerto 443 no está respondiendo con TLS. Las causas más comunes: un servidor virtual mal definido que sirve HTTP en el 443, un cortafuegos o proxy en medio, o una configuración que solo admite versiones antiguas de TLS. Hoy lo correcto es aceptar TLS 1.2 y 1.3 y nada por debajo. Puedes comprobar qué versiones acepta tu servidor:

openssl s_client -connect tudominio.com:443 -servername tudominio.com -tls1_2 </dev/null
openssl s_client -connect tudominio.com:443 -servername tudominio.com -tls1_3 </dev/null

Si una de las dos conecta y muestra el certificado, esa versión está admitida.

Cuando el problema no es del servidor

Antes de tocar nada, descarta estos casos si el error solo le sale a una persona:

  • Reloj del equipo desajustado. Da errores de fecha en todas las webs.
  • Antivirus o cortafuegos que inspeccionan HTTPS. Sustituyen el certificado por uno suyo; si se rompe esa función, aparecen errores de autoridad.
  • Wi-Fi de hotel, aeropuerto o empresa con portal de acceso o inspección del tráfico.
  • HSTS. Si tu web usa HSTS, el navegador no deja «continuar de todos modos». Es lo esperado: protege al visitante. El arreglo sigue estando en el certificado.

Si con openssl desde otra red todo sale bien, el problema está en el equipo o en la red de quien lo ve.

Cómo evitar que vuelva

  • Renovación automática siempre. Los certificados duran cada vez menos: desde marzo de 2026 el máximo es de 200 días, y el calendario aprobado por los navegadores y las CA lo baja a 100 días en 2027 y a 47 en 2029. Renovar a mano deja de ser viable.
  • Comprueba que la renovación funciona, no solo que está configurada: certbot renew --dry-run o el registro de AutoSSL del panel.
  • Recarga el servidor tras renovar. El instalador de certbot lo hace; si usas otro método, añade un hook de despliegue.
  • Sabe dónde vive cada certificado. El del servidor, el del CDN, el del balanceador, el del servidor de correo. Uno renovado no sirve si el que se entrega es otro.
  • Cubre siempre las dos variantes, con y sin www, y redirige una a la otra.
  • Instala la cadena completa y compruébala con openssl después de cada cambio.
  • Vigílalo desde fuera, porque el fallo lo ve el visitante, no tu servidor.

Si tu web aún no tiene HTTPS, empieza por cómo pasar tu web a HTTPS. Si el problema es que el dominio ha caducado, ningún certificado lo arreglará: mira se te ha caducado el dominio.

Revisar varios certificados de una vez

Si llevas varias webs, este bucle te dice cuántos días le quedan a cada certificado (usa el date de GNU/Linux; en macOS cambia la línea de la fecha o usa gdate):

for d in tudominio.com www.tudominio.com otrocliente.es; do
  fin=$(openssl s_client -connect "$d:443" -servername "$d" </dev/null 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2)
  echo "$d: $(( ($(date -d "$fin" +%s) - $(date +%s)) / 86400 )) días"
done

Y si solo quieres saber si caduca en menos de 14 días (1.209.600 segundos), -checkend devuelve un código de salida que puedes usar en un script o en una tarea programada:

openssl s_client -connect tudominio.com:443 -servername tudominio.com </dev/null 2>/dev/null |
  openssl x509 -noout -checkend 1209600 || echo "Caduca en menos de 14 días"

No te olvides del correo

El servidor de correo también tiene certificado, y cuando caduca los clientes de correo (Outlook, el móvil) empiezan a mostrar avisos o dejan de conectar. Se comprueba igual, pero negociando STARTTLS en los puertos de correo:

openssl s_client -starttls smtp -connect mail.tudominio.com:587 -servername mail.tudominio.com </dev/null 2>/dev/null | openssl x509 -noout -dates -subject
openssl s_client -connect mail.tudominio.com:993 -servername mail.tudominio.com </dev/null 2>/dev/null | openssl x509 -noout -dates -subject

El primero es el de envío (SMTP con STARTTLS) y el segundo el de IMAP con TLS directo. En hostings con panel, el certificado del correo a veces se renueva por separado del de la web: que la web esté bien no garantiza que el correo lo esté.

Para agencias: los certificados de todos tus clientes en un solo sitio

En una agencia con decenas de webs, el certificado que falla es el del cliente al que nadie ha mirado en meses: el que está en otro hosting, el que tiene el DNS en su propio registrador o el que se migró y perdió la renovación automática.

Jeffrey se conecta por HTTPS a cada web cada 6 horas y lee el certificado igual que lo haría un navegador. Si no es válido (caducado, autofirmado, para otro dominio o sin el certificado intermedio), abre una alerta crítica y urgente que te dice cuál de esos casos es. Si es válido pero caduca en 14 días o menos, te avisa para que lo revises; si quedan 3 días o menos, pasa a crítico. Cuando la web solo responde por HTTP, abre un aviso de web sin HTTPS. Y el Radar de Jeffrey enseña en su apartado de SSL el estado del certificado y si la web lleva a HTTPS. Si es urgente y no sabes por dónde empezar, escríbenos y lo miramos.

Preguntas frecuentes

¿Un error de certificado afecta al SEO?

Sí. Mientras el certificado sea inválido, los visitantes ven una pantalla de error en lugar de tu web y Google tiene problemas para rastrearla. Un día no suele dejar huella; varias semanas, sí.

¿Por qué a mí me funciona y a mis clientes no?

Lo más común es que falte el certificado intermedio (tu navegador lo tiene en caché y el de ellos no) o que el certificado cubra una variante del dominio y ellos usen la otra. También puede ser la caché de tu navegador o una red con inspección de tráfico.

¿Los certificados gratuitos son peores que los de pago?

Para cifrar y para que el navegador confíe, no hay diferencia: un certificado de Let’s Encrypt da el mismo candado que uno de pago. Los de pago aportan otras cosas (validación de la organización, soporte, garantías) que la mayoría de webs no necesitan.

¿Puedo decir a mis visitantes que acepten el riesgo y continúen?

No. Les estás enseñando a ignorar el aviso que les protege de webs falsas, y con HSTS ni siquiera podrán. Arregla el certificado.

¿Cada cuánto debo revisar los certificados?

Con renovación automática y una vigilancia externa, no tienes que revisarlos a mano. Sin vigilancia, al menos una vez al mes y siempre después de una migración o un cambio de DNS.

Para agencias

¿Llevas varias webs? Entérate antes que tu cliente

Jeffrey vigila las webs de tus clientes (caídas, SSL, dominios, DNS y correo) y te avisa antes de que llamen. Cuando hace falta una persona, entramos nosotros, en marca blanca.

¿Hablamos de tu proyecto?

Cuéntanos qué necesitas y te respondemos en menos de 24h.