代码之家  ›  专栏  ›  技术社区  ›  Svek

如何在ASP中与Kestrel一起使用HTTPS/SSL。NET Core 2。x?

  •  61
  • Svek  · 技术社区  · 7 年前

    我目前正在使用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中使用SSL。NET Core 2。x?

    2 回复  |  直到 7 年前
        1
  •  91
  •   Svek    6 年前

    基础知识。使用服务器URL

    如果要将服务器与分配给服务器/web主机的所有IP地址相关联,则可以执行以下操作:

    WebHost.CreateDefaultBuilder(args)
        .UseUrls("http://localhost:5000", "http://*:80")
        .UseStartup<Startup>()
        .Build();
    

    注意:中使用的字符串格式 UseUrls() 方法是: http://{ip address}:{port number} .
    -如果您使用 * (星号)表示IP地址,表示主机上所有可用的IP地址。
    -端口号不是必需的。如果保留为空,则默认为端口80。

    方法结束于 the official Microsoft Docs here .

    然而 SSL不能与 UseURL() ---这意味着如果你尝试添加一个以 https:// 程序将引发异常

    System.InvalidOperationException:
        HTTPS endpoints can only be configured using KestrelServerOptions.Listen().
    

    端点配置。使用HTTPS并绑定SSL证书

    只能使用配置HTTPS端点 KestrelServerOptions .

    下面是使用TCP套接字的示例 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();
    

    注意:如果您同时使用 UseUrls 这个 端点覆盖 使用URL 端点。

    您可以找到有关设置端点的更多信息 here at the official Microsoft Docs .

    如果使用IIS,IIS的URL绑定将覆盖通过调用 使用URL . 有关更多信息,请参阅 Introduction to ASP.NET Core Module .

        2
  •  -4
  •   Michael    7 年前