ssl - usehttpsredirection - usekestrel net core
¿Cómo usar HTTPS/SSL con Kestrel en ASP.NET Core 2.x? (2)
Actualmente estoy usando ASP.NET Core 2.xy solía poder hacer que Kestrel usara HTTPS / SSL simplemente colocándolo en el método UseUrls()
así:
var host = new WebHostBuilder()
.UseUrls("http://localhost", "https://111.111.111.111")
.UseKestrel()
.Build();
Pero ahora tengo la excepción:
System.InvalidOperationException:
HTTPS endpoints can only be configured using KestrelServerOptions.Listen().
¿Cómo configuro Kestrel para usar SSL en ASP.NET Core 2.x?
Los basicos. Usando las URL del servidor
Si desea asociar su servidor para usar todas las direcciones IP asignadas al servidor / servidor web, puede hacer esto:
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://localhost:5000", "http://*:80")
.UseStartup<Startup>()
.Build();
Nota: el formato de cadena utilizado en el método UseUrls()
es: http://{ip address}:{port number}
.
- Si usa un *
(asteriscos) para la dirección IP, significa toda la dirección IP disponible en el host.
- El número de puerto no es un requisito. Si lo deja en blanco, se establecerá de forma predeterminada el puerto 80.
Hay una gran cantidad de detalles adicionales sobre el método UseUrls()
en los documentos oficiales de Microsoft aquí .
Sin embargo, SSL no funcionará con el método
UseUrls()
, por lo que significa que si intenta agregar una URL comenzando conhttps://
el programa lanzará la excepción
System.InvalidOperationException: HTTPS endpoints can only be configured using KestrelServerOptions.Listen().
Configuración de punto final. Usando HTTPS y enlazando un certificado SSL
NOTA IMPORTANTE:
No se recomienda el alojamiento en un punto final público a través de Kestrel (incluso con SSL) y debe usar tecnologías como proxies inversos (como Nginx o IIS) en lugar de exponer a Kestrel en la naturaleza.
--- Puedes leer más sobre esto en los documentos oficiales de Microsoft aquí .
Los puntos finales HTTPS solo se pueden configurar utilizando KestrelServerOptions
.
Aquí hay un ejemplo del uso de sockets TCP usando el método de Listen
:
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options =>
{
options.Listen(IPAddress.Loopback, 5000); // http:localhost:5000
options.Listen(IPAddress.Any, 80); // http:*:80
options.Listen(IPAddress.Loopback, 443, listenOptions =>
{
listenOptions.UseHttps("certificate.pfx", "password");
});
})
.UseStartup<Startup>()
.Build();
Nota: que si usa el método de Listen
y UseUrls
, los puntos finales de Listen
anulan los UseUrls
finales de UseUrls
.
Puede encontrar más información sobre la configuración de puntos finales aquí en los documentos oficiales de Microsoft .
Si usa IIS, los enlaces de URL para IIS anulan cualquier enlace que establezca llamando a
Listen
oUseUrls
. Para obtener más información, consulte Introducción al módulo principal de ASP.NET .
No es necesario implementar https con kestrel por sí mismo. Si está ejecutando una aplicación que requiere https, lo más probable es que se dirija hacia afuera a Internet. Esto significa que necesita ejecutar kestrel detrás de nginx o Apache y que uno de ellos maneje la solicitud https por usted.