Почему Kestrel не запускается при наличии сертификатов? - PullRequest
0 голосов
/ 13 января 2020

У меня Apache 2.4 в качестве обратного прокси с Kestrel на Windows Server 2019. У меня уже запущено одно приложение на сервере. Я установил второе приложение с собственным файлом 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), я получаю эту ошибку:

crit: Microsoft.AspNetCore.Server.Kestrel [0] Невозможно запустить Kestrel. System.InvalidOperationException: невозможно настроить конечную точку HTTPS. Сертификат сервера не указан, сертификат разработчика по умолчанию не найден или устарел.

Чтобы создать сертификат разработчика, выполните команду "do tnet dev-certs https". Чтобы доверять сертификату (только Windows и macOS), запустите 'do tnet dev-certs https --trust'. Для получения дополнительной информации о настройке HTTPS см. https://go.microsoft.com/fwlink/?linkid=848054.

Несмотря на то, что у меня есть настоящие сертификаты SSL, я запустил dotnet dev-certs https --trust, как показывает ошибка, даже если что касается удаления сертификатов из Windows диспетчера сертификатов GUI вначале, как это было предложено на Github , безрезультатно.

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 14 января 2020

Как указано в комментариях Лекса Ли, UseUrls() не требуется https версия URL. Чтобы иметь дополнительные приложения на одном сервере, необходимо предоставить только неиспользуемый порт для Kestrel, и вот как это делается. Вот как должен выглядеть CreateHostBuilder:

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