useurls usekestrel usehttpsredirection net dotnet aspnetcore_urls asp ssl https asp.net-core-2.0 kestrel-http-server

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 con https:// 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 o UseUrls . 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.