证书存在时,为什么Kestrel无法启动?

时间:2020-01-13 19:47:26

标签: windows apache asp.net-core ssl-certificate kestrel

我在Windows Server 2019上使用Apache 2.4作为Kestrel的反向代理。我已经在服务器上运行了一个应用程序。我在appname.conf中建立了另一个具有自己的C:\Apache24\conf\sites-enabled文件的应用程序,并将新的未过期的SSL证书文件添加到C:\Apache24\conf\ssl\appname中。

在应用程序的Program.cs中,这是CreateHostBuilder,我在其中指定了要使用的端口,因此它们与第一个应用程序的端口不同:

public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseUrls("http://localhost:5002", "https://localhost:5003");
                webBuilder.UseStartup<Startup>();
            });

运行命令以在服务器(dotnet appname.dll)上启动应用程序时,出现此错误:

严重性:Microsoft.AspNetCore.Server.Kestrel [0] 无法启动红est。 System.InvalidOperationException:无法配置HTTPS端点。未指定服务器证书,并且找不到默认的开发人员证书或该证书已过期。

要生成开发者证书,请运行“ dotnet dev-certs https”。要信任证书(仅限Windows和macOS),请运行'dotnet dev-certs https --trust'。 有关配置HTTPS的更多信息,请参见https://go.microsoft.com/fwlink/?linkid=848054

即使我拥有真实的SSL证书,也按照错误提示运行dotnet dev-certs https --trust,甚至建议按照on Github先从Windows证书管理器GUI删除证书。 ,无济于事。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如Lex Li的评论所指出,UseUrls()不需要URL的https版本。要在同一服务器上具有其他应用程序,只需将未使用的端口提供给Kestrel,这就是完成的方式。 CreateHostBuilder的外观如下:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseUrls("http://localhost:5002");
            webBuilder.UseStartup<Startup>();
        });