useurls usekestrel usehttpsredirection usehsts only net kestrelserveroptions dotnet dev configured certs asp app asp.net ssl https

asp.net - usekestrel - ¿Por qué Request.IsSecureConnection devuelve falso cuando se espera que sea verdadero



usekestrel net core (2)

Tengo una página aspx que está verificando Request.IsSecureConnection para asegurar que sea cierta, de lo contrario redirige a la página segura en https://www.domain.com/page.aspx .

El servidor tiene un certificado SSL instalado para el dominio, y el navegador muestra el ícono del candado.

El mismo código se ejecutó bien en un servidor diferente, pero ahora Request.IsSecureConnection siempre devuelve falso.

He creado un archivo aspx completamente vacío, que solo imprime el valor de retorno de Request.IsSecureConnection y sigue siendo falso, por lo que no hay otro contenido que provenga de una solicitud http estándar.

¿Alguien podría sugerir qué podría estar causando esto, o dar alguna pista sobre cómo podría descubrir qué está causando que esto siempre devuelva falso?


Algunos balanceadores de carga agregan un nuevo encabezado a la solicitud que puede utilizar para determinar si la solicitud original del cliente llegó a SSL. Con los sitios web de Azure el siguiente código parece funcionar:

if (string.IsNullOrEmpty(Request.Headers["x-arr-ssl"])) { // No SSL } else { // Secure connection }

Algunos otros balanceadores de carga pueden usar otro encabezado, por ejemplo, X-Forwarded-Proto.


Si hay un enrutador de equilibrio de carga o similar en frente de su servidor web con terminación ssl, la conexión desde allí a su servidor web no será por SSL. En este caso, por lo general, debe verificar la conexión en un puerto específico o los encabezados que establece el equilibrador de carga.