Saltar al contenido

5xx · Errores del servidor

Error 525 SSL Handshake Failed (Cloudflare): qué significa y cómo solucionarlo

El error 525 de Cloudflare (SSL handshake failed) significa que Cloudflare no ha podido establecer una conexión HTTPS con tu servidor de origen. Ocurre con el modo SSL "Full" o "Full (strict)" cuando el origen no tiene certificado en el puerto 443, no admite versiones de TLS o cifrados compatibles, o no responde al SNI del dominio.

Qué significa el código 525

Con los modos Full, Cloudflare habla HTTPS también con tu servidor. Si el origen no sabe negociar TLS para ese dominio (no hay certificado configurado, solo escucha HTTP en el 443, o solo acepta TLS 1.0), el saludo inicial falla y aparece el 525.

Causas habituales del error 525

  • El origen no tiene HTTPS configurado en el puerto 443.
  • El virtual host HTTPS no coincide con el dominio (SNI).
  • Versiones de TLS o cifrados no compatibles.
  • Firewall que corta la conexión durante la negociación.

Cómo solucionar el error 525

  • Comprueba el HTTPS del origen: openssl s_client -connect IP:443 -servername dominio.
  • Instala un certificado de origen de Cloudflare (gratuito, 15 años) o uno de Let's Encrypt.
  • Activa TLS 1.2 y 1.3 en el servidor.
  • Como último recurso temporal, el modo Flexible evita el error, pero deja sin cifrar el tramo Cloudflare → origen.

Configuración y comandos

Probar el TLS del origen

bash
openssl s_client -connect 203.0.113.10:443 -servername ejemplo.com </dev/null 2>/dev/null | head -20

nginx con certificado de origen de Cloudflare

nginx
server {
    listen 443 ssl;
    server_name ejemplo.com;
    ssl_certificate     /etc/ssl/cloudflare/origen.pem;
    ssl_certificate_key /etc/ssl/cloudflare/origen.key;
    ssl_protocols TLSv1.2 TLSv1.3;
}

Ejemplo de respuesta

http
HTTP/2 525
server: cloudflare

Preguntas frecuentes

¿Qué diferencia hay entre 525 y 526?

525: no se ha podido negociar TLS (no hay HTTPS o es incompatible). 526: la negociación funciona, pero el certificado del origen no es válido y el modo es Full (strict).

Códigos relacionados

Ver todos los códigos de estado HTTP