Как использовать HTTPS / SSL с Kestrel в ASP.NET ядро 2.x?
В настоящее время я использую ASP.NET ядро 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 ядро 2.x?
2 ответов
основы. Использование Url Сервера
если вы хотите связать свой сервер, чтобы использовать все IP-адреса, назначенные серверу / веб-хосту, то вы можете сделать это:
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-сертификата
ВАЖНОЕ ПРИМЕЧАНИЕ:
Хостинг за общественные конечная точка через Kestrel (даже с SSL) не рекомендуется, и вы должны использовать такие технологии, как обратные прокси (например, Nginx или IIS) вместо того, чтобы подвергать Kestrel в дикой природе.
- - - вы можете прочитать больше об этом из официальные документы Microsoft здесь.
конечные точки 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
, the Listen
конечные точки переопределить UseUrls
конечные точки.
вы можете найти более подробную информацию о настройке конечных точек здесь, в официальных документах Microsoft.
если вы используете IIS, привязки URL для IIS переопределяют любые привязки, которые вы устанавливаете, вызывая либо
Listen
илиUseUrls
. Дополнительные сведения см. В разделе введение в ASP.NET основной модуль.
вам не нужно реализовывать https с помощью kestrel самостоятельно. Если вы используете приложение, для которого требуется https, оно, скорее всего, будет обращено к интернету. Это означает, что вам нужно запустить kestrel за nginx или Apache и иметь один из тех, кто обрабатывает запрос https для вас.