Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在ASP.NET Core 2.x中与Kestrel一起使用HTTPS/SSL?_Ssl_Https_Asp.net Core 2.0_Kestrel Http Server - Fatal编程技术网

如何在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:

我目前正在使用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:
     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();