我已经使用命令行创建了一个示例ASP.NET Core
应用程序:
dotnet new
并尝试使用命令运行它:
dotnet run
但是,在浏览器中打开URL时,它抱怨SSL无效。
我可以使用Visual Studio
完整版运行该程序,没有任何问题,但是不能使用命令行运行该程序:
dotnet run
似乎由命令Kestrel
运行的dotnet run
需要额外的配置。
现在,问题是如何使用ASP.NET Core
在https
上运行Kestrel
应用程序?
我在Dot Net Core 2.2
和Visual Studio 2019
上
答案 0 :(得分:0)
似乎IIS Express
在后台进行了一些工作,其中包括配置SSL
认证。因此,我专注于ASP.NET Core
的内部托管组件Kestrel
。
首先,借助此命令,我使用PowerShell
创建了SSL证书:
New-SelfSignedCertificate -DnsName localhost -CertStoreLocation "cert:\LocalMachine\My"
此命令创建一个证书,我可以通过management console / certificates
程序看到它。有关更多信息,请参见this。创建新证书后,需要将其导出为pfx
文件。为此,请在管理控制台中使用以下步骤:
Certificates
管理单元添加到管理控制台。Personal\Certifcates
导航pfx
被自动选中。点击“下一步” 下一步是将ASP.NET Core配置为使用here描述的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
创建的证书。在管理控制台中也可以使用。
答案 1 :(得分:0)
使用dotnet run
或从Visual Studio在开发模式下运行ASP.NET Core时,已经内置了对开发证书的支持,该证书可让您立即使用HTTPS支持进行开发。 / p>
开发证书是.NET Core SDK内置的,通常,当您第一次运行.NET Core SDK时,它应该自行设置。如果这样不起作用,或者由于某种原因您丢失了开发证书,那么以后可以随时使用以下命令安装它:
dotnet dev-certs https --trust
此部分在官方文档的“Enforcing SSL” chapter中也有描述。
请注意,开发证书仅在开发期间适用,当然您需要为以后的生产设置适当的证书。当然,如何工作取决于您以后如何托管应用程序。 hosting chapter涵盖了不同的选项以及如何配置SSL。