Самостоятельно размещенное приложение ASP.NET Core не работает с SSL - PullRequest
0 голосов
/ 10 июля 2019

Я создал пример приложения 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

Ответы [ 2 ]

0 голосов
/ 13 июля 2019

Когда вы запускаете ASP.NET Core в режиме разработки с использованием dotnet run или из Visual Studio, тогда уже имеется встроенная поддержка сертификата разработки, которая позволяет вам сразу разрабатывать с поддержкой HTTPS.

Сертификат разработки встроен в .NET Core SDK, и обычно он должен сам настраиваться при первом запуске .NET Core SDK.Если это не сработало или вы потеряли сертификат разработки по какой-либо причине, вы всегда можете установить его позже, используя следующую команду:

dotnet dev-certs https --trust

Эта часть также описана в «Enforcing SSL»”Глава официальной документации.

Обратите внимание, что сертификат разработки применяется только во время разработки, и, конечно, позже вам потребуется настроить соответствующий сертификат для производства.Как это работает, конечно, зависит от того, как вы собираетесь разместить приложение позже.Различные параметры и способы настройки SSL описаны в главе хостинг .

0 голосов
/ 10 июля 2019

Кажется, что 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.Это также доступно в консоли управления.

...