首页 > 解决方案 > 自托管 ASP.NET Core 应用程序不适用于 SSL

问题描述

ASP.NET Core使用命令行创建了一个示例应用程序:

dotnet new

并尝试使用命令运行它:

dotnet run

但是,在浏览器中打开 URL 时,它抱怨 SSL 无效。

我可以使用Visual Studio完整版运行程序没有任何问题,但不能使用命令行运行它:

dotnet run

似乎Kestrel由命令运行的dotnet run需要额外的配置。

现在,问题是如何通过using运行我的ASP.NET Core应用程序?httpsKestrel

我在Dot Net Core 2.2Visual Studio 2019

标签: asp.net-corehttpskestrel

解决方案


似乎IIS Express在幕后做了一些工作,包括SSL认证的配置。所以,我专注于ASP.NET Core的内部托管组件,即Kestrel.

首先,我通过以下命令创建了 SSL 证书PowerShell

New-SelfSignedCertificate -DnsName localhost -CertStoreLocation "cert:\LocalMachine\My"

此命令创建一个认证,我可以通过management console / certificates程序看到它。有关更多信息,请参阅。创建新证书后,您需要将其导出为pfx文件。要在管理控制台中执行此操作,请使用以下步骤:

  1. 将管理单元添加Certificates到管理控制台。
  2. 浏览Personal\Certifcates
  3. 右键单击您新创建的证书,然后从“所有任务”中选择“导出”
  4. 选择显示“是,导出私钥”的选项
  5. 您会看到pfx被自动选中。点击下一步”
  6. 设置密码和保存位置。
  7. 您已完成创建 pfx 文件

下一步是配置 ASP.NET Core 以使用此处pfx描述的文件:

public static IWebHost BuildWebHost(string[] args) =>
 WebHost.CreateDefaultBuilder(args)
 .UseStartup < Startup > ()
 .UseKestrel((hostingContext, options) => 
 { 
  if (hostingContext.HostingEnvironment.IsDevelopment) {
   options.Listen(IPAddress.Loopback, 9001);
   options.Listen(IPAddress.Loopback, 9002, listenOptions => {
    listenOptions.UseHttps("certificate.pfx", "password");
   });
  }

 })
 .Build();

现在,问题应该得到解决。如果没有,请尝试由IIS Express. 这在管理控制台中也可用。


推荐阅读