如何在ASP.NET Core 2.x中与Kestrel一起使用HTTPS/SSL?
我目前正在使用ASP.NET Core 2.x,我曾经能够让Kestrel使用HTTPS/SSL,只需将其放入如何在ASP.NET Core 2.x中与Kestrel一起使用HTTPS/SSL?,ssl,https,asp.net-core-2.0,kestrel-http-server,Ssl,Https,Asp.net Core 2.0,Kestrel Http Server,我目前正在使用ASP.NET Core 2.x,我曾经能够让Kestrel使用HTTPS/SSL,只需将其放入UseUrls()方法,如下所示: var host = new WebHostBuilder() .UseUrls("http://localhost", "https://111.111.111.111") .UseKestrel() .Build(); 但现在我得到了一个例外: System.InvalidOperationException:
UseUrls()
方法,如下所示:
var host = new WebHostBuilder()
.UseUrls("http://localhost", "https://111.111.111.111")
.UseKestrel()
.Build();
但现在我得到了一个例外:
System.InvalidOperationException:
HTTPS endpoints can only be configured using KestrelServerOptions.Listen().
如何配置Kestrel在ASP.NET Core 2.x中使用SSL? 基础知识。使用服务器URL 如果要关联服务器以使用分配给服务器/web主机的所有IP地址,则可以执行以下操作:
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://localhost:5000", "http://*:80")
.UseStartup<Startup>()
.Build();
端点配置。使用HTTPS和绑定SSL证书 只能使用
KestrelServerOptions
配置HTTPS端点
下面是使用Listen
方法使用TCP套接字的示例:
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();
WebHost.CreateDefaultBuilder(args)
.UseKestrel(选项=>
{
options.Listen(IPAddress.Loopback,5000);//http:localhost:5000
options.Listen(IPAddress.Any,80);//http::80
options.Listen(IPAddress.Loopback,443,listenOptions=>
{
UseHttps(“certificate.pfx”,“password”);
});
})
.UseStartup()
.Build();
注意:如果同时使用Listen
方法和UseUrls
,则Listen
端点将覆盖UseUrls
端点
您可以找到有关设置端点的更多信息
如果使用IIS,IIS的URL绑定将覆盖通过调用Listen
或useURL
设置的任何绑定。有关详细信息,请参阅
您不需要单独使用kestrel实现https。如果您正在运行一个需要https的应用程序,它很可能会面向internet。这意味着您需要在nginx或Apache后面运行kestrel,并让其中一个为您处理https请求 那不是真的。在许多情况下,Kestrel的加密通信在内部使用和/或不通过公共端点承载。是的,内部是可以的。但是,OP谈论的是https。所以,我假设它是朝外的。此外,仅仅因为有人在公共端点上使用红隼,并不意味着这样做是好的。以我的经验,我永远不会相信红隼会面对公众。尤其是当微软自己不推荐的时候。有很多理由需要单独使用凯斯特的https。Damian Edwards说Kestrel现在是一个受支持但未经认证的边缘服务器。@Michael问题是“如何配置Kestrel在ASP.NET Core 2.x中使用SSL?”,答案是“为什么不使用反向代理”没有回答这个问题。@CharlieFlowers您可以在内部网络上使用不带SSL的边缘服务器的Kestrel:您可以提供有关如何生成
certificate.pfx
,例如用作起点的信息?@AndreiRînea-这是一个非常广泛的问题。您可以通过购买SSL证书获得SSL证书,也可以自行签名。该过程还取决于您的操作系统等。如果您使用的是windows,请查看certreq.exe
,或者您也可以使用IIS。Kestrel for ASP.NET Core 2对于公共端点来说足够安全。ASP.NET Core 1的Kestrel未被激活。@robrich此语句有任何引用吗?@Anttu:转到,并在2.0和1.1选项卡之间切换。请参阅本文和完整的源代码
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();