HTTPS и TLS
HTTPS (HTTP през криптирани TLS връзки) е стандартният начин за извършване на HTTP заявки в
HTTPS (HTTP през криптирани TLS връзки) е стандартният начин за извършване на HTTP заявки в интернет по причини, свързани със сигурността, целостта и поверителността. Съществуват няколко особености относно HTTPS/TLS, които трябва да имате предвид при използване на обратен прокси сървър като YARP.
Прекратяване на TLS
YARP е HTTP прокси сървър от ниво 7, което означава, че входящите HTTPS/TLS връзки се дешифрират напълно от прокси сървъра, за да може той да обработи и препрати HTTP заявките. Това е известно като прекратяване на TLS (TLS termination). Изходящите връзки към дестинацията(ите) може да бъдат криптирани или не, в зависимост от предоставената конфигурация.
TLS тунелиране (CONNECT)
TLS тунелирането чрез метода CONNECT е функция, използвана за проксиране на заявки без тяхното дешифриране. Тя не се поддържа от YARP и няма планове за добавянето ѝ.
Конфигуриране на входящите връзки
YARP може да работи върху всички сървъри на ASP.NET Core, а конфигурирането на HTTPS/TLS за входящите връзки е специфично за конкретния сървър. Прегледайте документацията за Kestrel, IIS и Http.Sys за подробности относно конфигурацията.
Разширени TLS филтри с Kestrel
Kestrel поддържа прихващане на входящите връзки преди установяването на TLS връзката (handshake). YARP включва API-то TlsFrameHelper, което може да анализира необработеното установяване на TLS връзката и да ви позволи да събирате персонализирана телеметрия или незабавно да отхвърляте връзки. Тези API-та не могат да променят установяването на TLS връзката, нито да дешифрират потока от данни. Вижте този пример.
Конфигуриране на изходящите връзки
За да активирате TLS криптиране при комуникация с дестинация, задайте адреса на дестинацията като https, например "https://destinationHost". Вижте документацията за конфигурация за примери.
Хост името, зададено в адреса на дестинацията, ще се използва за установяването на TLS връзката по
подразбиране, включително за SNI и валидиране на сертификата на сървъра. Ако е активирано проксирането на оригиналната заглавна част host,
тази стойност ще се използва вместо това за установяването на TLS връзката. Ако е необходимо да се използва
персонализирана стойност за host, използвайте трансформацията RequestHeader, за да зададете заглавната част host.
Изходящите връзки към дестинациите се обработват от HttpClient/SocketsHttpHandler. За всеки клъстер може да се конфигурира отделен екземпляр и настройки. Някои настройки са достъпни в модела за конфигурация, докато други могат да бъдат конфигурирани само в код. Вижте документацията за HttpClient за подробности.
Сертификатите на сървърите-дестинации трябва да бъдат доверени от прокси сървъра, или трябва да се приложи персонализирано валидиране чрез конфигурацията на HttpClient.
Тази статия е създадена от автора с помощта на AI. Научете повече