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

Why does Kestrel fail to start when certificates are present?

我在 Windows Server 2019 上使用 Apache 2.4 作为 Kestrel 的反向代理。我已经在服务器上 运行 安装了一个应用程序。我在 C:\Apache24\conf\sites-enabled 中使用自己的 appname.conf 文件设置了第二个应用程序,并将新的、未过期的 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) 时,我收到此错误:

crit: Microsoft.AspNetCore.Server.Kestrel[0] Unable to start Kestrel. System.InvalidOperationException: Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found or is out of date.

To generate a developer certificate run 'dotnet dev-certs https'. To trust the certificate (Windows and macOS only) run 'dotnet dev-certs https --trust'. For more information on configuring HTTPS see https://go.microsoft.com/fwlink/?linkid=848054.

尽管我有真正的 SSL 证书,但我有 运行 dotnet dev-certs https --trust,正如错误提示的那样,甚至从 Windows 证书管理器中删除了证书按照建议 on Github 首先使用 GUI,但无济于事。

非常感谢任何帮助。

正如 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>();
        });