Что ограничивает диапазон портов для HTTPS в .NET Core 2.2? - PullRequest
0 голосов
/ 05 декабря 2018

В launchSettings.json у меня есть следующее.Это работает, и я могу получить доступ к Swagger и остальной части страницы, используя https://localhost:44300.

{ ...
  "iisSettings": {
    "windowsAuthentication": false, 
    "anonymousAuthentication": true, 
    "iisExpress": {
      "applicationUrl": "http://localhost:52088",
      "sslPort": 44300
    }
  }, ...
}

Когда я изменяю "sslPort": 44300 , например, "sslPort": 44299 , я все еще могу получить доступ к материалу, изменив URL соответствующим образом.

Однако, когда я установил значение 5100, я заметил, что содержимое больше не доступно.На самом деле, похоже, что рабочий диапазон довольно ограничен и сконцентрирован только на 44300.

Что это значит?!

Я отключил брандмауэр, на всякий случай.В конфиге я попытался добавить URL-адреса, как это.Никаких изменений в поведении.

WebHost.CreateDefaultBuilder(args)
  //.UseUrls("https://localhost/5100")
  .UseStartup<Startup>();

Как заставить приложение работать должным образом на выбранном порту?

Следуя документам для .NET Core 2.2 Я добавил конфигурацию перенаправления следующим образом.Опасаясь, это никак не повлияло на проблему.

services.AddHttpsRedirection(_ =>
{
  _.RedirectStatusCode = StatusCodes.Status307TemporaryRedirect;
  _.HttpsPort = 5100;
});

Заметив, что сами документы предлагают 5001 в качестве альтернативного номера порта, я начинаю подозревать, что проблема может быть обнаружена совсем в другом месте.Я воссоздал настройку на другом компьютере и смог воспроизвести ошибку.Тем не менее, оба компьютера настроены мной, поэтому было бы замечательно, если бы кто-то не-я мог подтвердить поведение.

У меня есть совет использовать Nmap для проверки ответов на порты, и, очевидно, естьчто-то отвечает на порт 5100. То же самое можно подтвердить с помощью TelNet .Однако Swagger, а также вызовы, использующие PostMan, по-прежнему терпят неудачу ...

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Документация для IIS Express гласит (мой акцент):

Если вы хотите проверить SSL-доступ к вашему сайту, вы можете сделать это с помощью IIS Express, используяПорт SSL между 44300 и 44399 и самозаверяющий сертификат IIS Express. Попытка использовать SSL с портом за пределами этого диапазона приводит к сбою привязки URL-адреса, когда ваш веб-сайт запускается под IIS Express .

В связанных документах есть инструкции.microsoft.com Страница, которая описывает, как настроить ваш компьютер, чтобы разрешить это.Краткая версия:

  1. WIN-R> mmc.exe
  2. Меню Файл> Добавить / удалить оснастку ...
  3. Выбрать Сертификаты слева и нажмите кнопку Add >
  4. Выберите Учетная запись компьютера , Next >, а затем Finish
  5. Нажмите Okчтобы закрыть окно Установка и удаление оснасток
  6. Развернуть сертификаты (локальный компьютер)> Личные> Сертификаты в древовидном представлении с левой стороны
  7. Найти сертификатвыдан localhost с понятным именем Сертификат разработки IIS Express > Дважды щелкните, чтобы открыть его
  8. Перейдите на вкладку Подробно и пролистайте всепуть вниз, чтобы найти отпечаток
  9. Скопировать и вставить значение (нажмите на него в списке, и значение будет добавлено в текстовое поле в нижней части окна)

Теперь вы сняли отпечаток для сертификата:

  1. Откройте командную строкукак администратор
  2. Запустите команду netsh http add sslcert ipport=0.0.0.0:5100 certhash=**Insert_Thumbprint_From_Step_9_Above_Here** appid={00112233-4455-6677-8899-AABBCCDDEEFF}
  3. Перезапустите IIS Express / сеанс отладки

Теперь IIS Express должен привязаться к 5100 (вы можете изменить порт вкоманда на шаге 2 (один из ваших вариантов), позволяющий Visual Studio открыть окно браузера, в котором загружается ваш сайт.

0 голосов
/ 06 декабря 2018

На панели инструментов будет работать значок IIS Express.Остановите сайт под портом 44300 через IIS Express и снова перезапустите сайт, и теперь он должен работать через ваш новый порт.Если это не сработает, просто выйдите из IIS Express и перезапустите сайт.

enter image description here

...