Включите безопасное HTTPS-соединение для основного веб-интерфейса Asp.net - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть приложение REST API, созданное с использованием ASP.NET Core 2.1.REST API создается WebHostBuilder и поддерживается Kestrel.

Startup.Kernel = kernel;
    _restApiServer = new WebHostBuilder()
      .UseKestrel(options =>
      {

      })
      .UseContentRoot(Directory.GetCurrentDirectory())
      .UseIISIntegration()
      .UseStartup<Startup>()
      .UseUrls(string.Format("http://localhost:{0}", _configuration.PortNumber))
      .UseSetting("https_port",_configuration.HttpsPort.ToString())
      .Build();
     _restApiServer.Run();

REST API по умолчанию обслуживается через порт 8998.Этот REST API запускается моим другим приложением.Я могу подключиться к этому API REST, используя браузер и POSTMAN.

Теперь я хотел бы защитить свое соединение с REST API.Я сделал следующее: я добавил необходимую конфигурацию для принудительного создания безопасного соединения в своем классе запуска в методе Configure:

app.UseHttpsRedirection();

И я также выполнил код для доверия сертификатам разработчика:

dotnet dev-certs https --trust

Дело в том, что, когда я пытаюсь получить доступ к веб-API через браузер, я получаю сообщение об ошибке:

localhost отказывается подключиться.Попробуйте:

Проверка соединения

Проверка прокси и брандмауэра

ERR_CONNECTION_REFUSED

Также, когда я использую POSTMAN для вызова некоторого REST APIметоды, которые я получил и ошибка:

Не удалось получить ответ

Что я делаю не так?Нужно ли указывать сертификат непосредственно в конфигурации Kestrel?

1 Ответ

0 голосов
/ 18 февраля 2019

Поскольку https - это другой протокол, вам нужно настроить другой порт для https.Для автоматического перенаправления на URL-адрес https необходимо выполнить три действия:

  1. Добавить прослушиватель.В program.cs (номера портов приведены в качестве примера):

    .UseUrls("http://localhost:8998", "https://localhost:8999");

    При запуске приложения вы должны увидеть:

enter image description here

Настройка перенаправления https.В Startup.ConfigureServices:

services.AddHttpsRedirection(options => options.HttpsPort = 8999);

Если вы пропустите этот шаг, то будет использоваться порт по умолчанию, вероятно, 5001. Для хостинга в Azure вам может потребоваться установить значение 443.

И в Startup.Configure:

app.UseHttpsRedirection();

Вызов на http://localhost:8998 теперь будет перенаправлен на https://localhost:8999.


Если вы выполнили вышеуказанные действия, но не создали сертификат, то порт https не указан и не будет доступен!Если сертификат был создан, то должны быть перечислены оба порта.

Я предполагаю, что в производстве Api будет работать за прокси-сервером.В этом случае вы можете пропустить вышеуказанные шаги.Запуск за прокси-сервером означает, что вы можете перенаправить http на https, что означает, что вам не нужно https redirect .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...