Published signals

Por qué Kestrel rechaza certificados SSL que funcionan en Nginx: un análisis profundo

Score: 7/10 Topic: Kestrel SSL certificate trust behavior analysis

Un caso real de depuración revela que la validación de la cadena de certificados SSL de Kestrel difiere de nginx, causando fallos de confianza en entornos de clientes restringidos.

Un desarrollador chino se encontró recientemente con un desconcertante problema SSL: un certificado funcionaba perfectamente en nginx pero fallaba en Kestrel, el servidor web multiplataforma de ASP.NET Core. El problema surgió al actualizar los certificados SSL para un proyecto que usa CYarp, el cual expone a Kestrel como una puerta de enlace externa. Mientras los navegadores aceptaban el nuevo certificado, los dispositivos cliente—probablemente con almacenes de confianza limitados o personalizados—lo rechazaban. El autor comparó sistemáticamente el comportamiento de Kestrel y nginx, descubriendo que Kestrel realiza una validación de cadena de certificados más estricta por defecto. Esto incluye una verificación más rigurosa de los certificados intermedios y anclas de confianza, mientras que nginx a menudo acepta cadenas que Kestrel considera incompletas. La publicación proporciona pasos prácticos de depuración, como inspeccionar la cadena de certificados con OpenSSL y ajustar la configuración de validación de Kestrel mediante la configuración `KestrelServerOptions`. Para los desarrolladores .NET que implementan Kestrel en roles de borde o puerta de enlace, este es un recordatorio crítico de probar la confianza SSL en todos los tipos de clientes, no solo en navegadores. La causa raíz no es un error sino una diferencia de diseño: Kestrel prioriza la seguridad sobre la compatibilidad, lo que puede romper conexiones de clientes antiguos o integrados.