использовать SSL в ASP.NET Core 2.x? », ответ« почему вы не используете обратный прокси »не отвечает на вопрос.

тоящее время я использую ASP.NET Core 2.x, и я имел обыкновение заставлять Kestrel использовать HTTPS / SSL, просто помещая его вUseUrls() метод вроде так:

var host = new WebHostBuilder()
    .UseUrls("http://localhost", "https://111.111.111.111")
    .UseKestrel()
    .Build();

Но теперь я получаю исключение:

 System.InvalidOperationException:
     HTTPS endpoints can only be configured using KestrelServerOptions.Listen().

Как настроить Kestrel для использования SSL в ASP.NET Core 2.x?

 natenho16 дек. 2017 г., 03:59
Обратитесь к этому сообщениюblogs.msdn.microsoft.com/webdev/2017/11/29/... и полный исходный кодgithub.com/aspnet/samples/tree/master/samples/aspnetcore/...

Ответы на вопрос(2)

е приложение, для которого требуется https, оно, скорее всего, будет обращено в Интернет. Это означает, что вам нужно запустить kestrel за nginx или Apache, и один из них обработает запрос https для вас.

 Rich S15 апр. 2018 г., 22:34
@Michael Вопрос был "Как я могунастроить пустельгу использовать SSL в ASP.NET Core 2.x? », ответ« почему вы не используете обратный прокси »не отвечает на вопрос.
 Michael07 окт. 2017 г., 19:21
Да, внутренне в порядке. Но ОП говорит о https. Итак, я предположил, что это будет наружу. Кроме того, просто потому, что кто-то использует пустельгу через общедоступную конечную точку, не означает, что это хорошо делать. По моему опыту, я бы никогда не поверил пустельге настолько, чтобы предстать перед публикой. Особенно, когда Microsoft не рекомендует это самостоятельно.
 Rich S03 дек. 2017 г., 00:46
Downvoted. Множество причин, чтобы нуждаться в https вместе с kestrel. По словам Дамиана Эдвардса, Kestrel теперь является пограничным сервером, который поддерживается, но не сертифицирован.
 Svek07 окт. 2017 г., 19:19
Это не правда. Во многих случаях шифрованная связь для Kestrel используется внутри и / или не размещается в общедоступной конечной точке.
 Michael08 мар. 2018 г., 01:23
@RichS прочитайте полный ответ до голосования.
Решение Вопроса
Основы. Использование URL-адресов сервера

назначенных серверу / веб-хосту, то вы можете сделать это:

WebHost.CreateDefaultBuilder(args)
    .UseUrls("http://localhost:5000", "http://*:80")
    .UseStartup<Startup>()
    .Build();

Примечание. Формат строки, используемый вUseUrls() метод это:http://{ip address}:{port number}.
- Если вы используете* (звездочки) для IP-адреса, то есть все доступные IP-адреса на хосте.
- Номер порта не является обязательным. Если вы оставите это поле пустым, по умолчанию будет использоваться порт 80.

Существует множество дополнительных деталей оUseUrls() метод закончен вофициальные документы Microsoft здесь.

Тем не мение,SSL не будет работать с UseUrls() метод --- так, это означает, что если вы попытаетесь добавить URL, начинающийся сhttps:// программа скинет исключение

System.InvalidOperationException:
    HTTPS endpoints can only be configured using KestrelServerOptions.Listen().
Конечная точка конфигурации. Использование HTTPS и привязка SSL-сертификата

Конечные точки HTTPS могут быть настроены только с использованиемKestrelServerOptions.

Вот пример использования TCP-сокетов с использованиемListen метод:

WebHost.CreateDefaultBuilder(args)
    .UseKestrel(options =>
    {
        options.Listen(IPAddress.Loopback, 5000);  // http:localhost:5000
        options.Listen(IPAddress.Any, 80);         // http:*:80
        options.Listen(IPAddress.Loopback, 443, listenOptions =>
        {
            listenOptions.UseHttps("certificate.pfx", "password");
        });
    })
    .UseStartup<Startup>()
    .Build();

Примечание: если вы используете обаListen метод иUseUrls,Listen конечные точки перекрываютUseUrls конечные точки.

Вы можете найти больше информации о настройке конечных точекздесь, на официальных документах Microsoft.

Если вы используете IIS, привязки URL для IIS переопределяют любые привязки, которые вы установили, вызвавListen или жеUseUrls, Для получения дополнительной информации см.Введение в основной модуль ASP.NET.

 Andrei Rînea15 нояб. 2017 г., 17:49
Вы можете предоставить информацию о том, как генерироватьcertificate.pfxнапример использоватьandrewlock.net/... в качестве отправной точки?
 robrich23 нояб. 2017 г., 07:43
Kestrel для ASP.NET Core 2 достаточно безопасен для публичной конечной точки. Кестрел для ASP.NET Core 1 не было.
 robrich14 дек. 2017 г., 08:21
@Anttu: голова кdocs.microsoft.com/en-us/aspnet/core/fundamentals/servers/...и переключайтесь между вкладками 2.0 и 1.1.
 Anttu27 нояб. 2017 г., 09:57
@robrich Есть ссылки на это утверждение?
 Svek15 нояб. 2017 г., 18:17
@ AndreiRînea - Это очень широкий вопрос. Вы можете получить сертификат SSL, купив его, или можете подписать его самостоятельно. Процесс также зависит от вашей операционной системы и т. Д. Если вы используете Windows, возможно, посмотрите наcertreq.exe или вы могли бы использовать IIS тоже.

Ваш ответ на вопрос