CDN и SSL / TLS

Mutt

Professional
Messages
1,059
Reputation
7
Reaction score
573
Points
113
Основное руководство по CDN, глава 5:

CDN и SSL / TLS
Secure Sockets Layer (SSL) - это протокол, используемый для установления защищенных соединений, обычно между сервером и веб-браузером. Вся информация, отправляемая через SSL-соединение, зашифрована, поэтому доступ к ней может получить только предполагаемый получатель. Это облегчает безопасный обмен конфиденциальными данными , включая данные для входа в систему, информацию о кредитных картах и содержимое электронной почты, тем самым снижая риск того, что их перехватит третья сторона в ходе атаки типа «человек посередине».

diagram-51@3x.png

Руководство Imperva по CDN: CDN и SSL / TLS

По состоянию на 2015 год последняя версия SSL (3.0) официально устарела. Он был заменен TLS (Transport Layer Security), который обеспечивает более надежное шифрование и выполняет аналогичную функцию. Однако первоначальное название прижилось; многие до сих пор называют TLS «SSL / TLS» или просто «SSL».
Впервые представленный в 1995 году, SSL / TLS играет важную роль в развитии Интернета, обеспечивая ему фактор доверия, необходимый для того, чтобы служить местом ведения бизнеса. Google официально добавил TLS в свой список факторов ранжирования в 2014 году, что еще больше повысило важность протокола и ускорило его и без того широкое распространение.
О SSL / TLS с точки зрения безопасности и бизнеса можно сказать гораздо больше. Однако в этом руководстве мы сосредоточены на аспектах производительности и безопасности использования SSL в сочетании с сетью доставки контента (CDN) - все более популярным выбором для многих владельцев веб-сайтов.

Как CDN может повысить производительность SSL / TLS
Проблема: накладные расходы на рукопожатие SSL / TLS
Чтобы понять, как использование CDN может улучшить производительность SSL, давайте сначала рассмотрим, чем SSL-соединение отличается от обычного TCP-аналога.
Типичное TCP-соединение устанавливается посредством процесса, известного как трехстороннее рукопожатие. В нем клиент отправляет запрос на соединение (SYN), получает подтверждение (SYN / ACK), а затем отвечает собственным подтверждением (ACK). Это замыкает цикл и устанавливает соединение.

diagram-52@3x.png

Руководство Imperva CDN: накладные расходы на рукопожатие SSL / TLS

Один, два и три… вперед, назад и вперед. Предполагая, что нет икоты, время, необходимые для завершения рукопожатия должно быть в точности равны одному время прохождения (RTT).

С другой стороны, согласование соединения SSL / TLS требует нескольких дополнительных действий. Это связано с тем, что теперь браузеру и серверу также необходимо:
  • Согласуйте взаимно совместимый метод шифрования.
  • Пройдите процесс взаимной проверки.
  • Сгенерируйте симметричные ключи, используемые для кодирования и декодирования всей информации, которой обмениваются во время сеанса.
Эти дополнительные взаимодействия увеличивают накладные расходы на процесс, что приводит к двум дополнительным циклам приема-передачи - или более, в зависимости от конфигурации вашего сервера.

Например
Если время приема-передачи от Сан-Франциско до вашего лондонского сервера составляет 50 мс, то установление подтверждения SSL / TLS займет не менее 150 мс.

Решение: используйте CDN, чтобы сократить время прохождения туда и обратно
Для большинства преимущества безопасности SSL намного перевешивают недостаток более длительного времени соединения. Тем не менее, накладные расходы могут доставлять неудобства, поэтому многие онлайн-компании используют CDN для компенсации некоторой дополнительной задержки.
Сокращение времени приема-передачи - ключевая функция CDN - услуги, специально разработанной для повышения скорости ответа за счет уменьшения физического расстояния между вашим веб-сайтом и его пользователями.
Уменьшая время приема-передачи, CDN также ускоряет все взаимодействия в процессе согласования SSL / TLS. Поскольку для рукопожатия требуется как минимум три обхода, вы получаете трехкратный эффект за каждую миллисекунду, которую сокращает CDN.
diagram-53@3x.png

Руководство Imperva по CDN: используйте CDN, чтобы сократить время прохождения туда и обратно

Например
Если время приема-передачи от Сан-Франциско до вашего лондонского сервера составляет 50 мс, то установление подтверждения SSL / TLS займет не менее 150 мс.

Следите за сохранностью
Обратите внимание, что описанный выше сценарий верен только в том случае, если ваш CDN уже имеет открытое соединение с исходным сервером. В противном случае, после того как будет установлено первое соединение SSL / TLS, сети CDN все равно потребуется инициировать второй процесс согласования. Здесь накладные расходы SSL остаются прежними (или даже могут быть немного дольше).
Здесь важно убедиться, что ваш CDN имеет функцию проверки активности, также называемую постоянным соединением. С помощью keep-alive CDN поддерживает открытое соединение с сервером между различными пользовательскими сеансами в течение нескольких минут за раз.
Это означает, что до тех пор, пока ваш веб-сайт посещается раз в несколько минут, CDN и исходному серверу не придется повторно участвовать в дополнительных согласованиях SSL / TLS. Все ваши посетители выигрывают от более быстрого рукопожатия.

Например
После того, как SSL-соединение с прокси-сервером LA установлено, при отсутствии функции проверки активности CDN должен повторно открыть соединение с исходным сервером в Лондоне.
Время приема-передачи между Лос-Анджелесом и Лондоном составляет 30 мс, поэтому для согласования второго SSL-соединения потребуется 90 мс. Это возвращает общее время квитирования к 150 мс.
diagram-54@3x.png

Руководство Imperva CDN: следите за сохранением активности

Использование CDN для нестандартной оптимизации
Как уже упоминалось, количество циклов, необходимых для подтверждения SSL / TLS, зависит от конфигурации вашего сервера. Например, если ваш сервер не оптимизирован для обработки записей TLS, размер которых превышает определенный размер, возникают дополнительные циклы передачи, что приводит к дополнительным двусторонним взаимодействиям.
Кроме того, некоторые конфигурации сервера могут ускорить обмен данными SSL / TLS, в том числе:

Фальстарт
Позволяет браузеру отправлять зашифрованные данные приложения даже до завершения согласования SSL.
diagram-55@3x.png

Руководство Imperva CDN: ложный старт

Возобновление сеанса
Кэширует информацию о посетителях и сервере, чтобы сократить время переговоров для повторных посетителей.
diagram-56@3x.png

Руководство Imperva CDN: возобновление сеанса
Большинство современных сетей CDN предварительно настроены для оптимизированной связи SSL / TLS. Таким образом, просто используя CDN, вы автоматически устраняете все потенциальные узкие места и получаете выгоду от оптимизированной производительности TLS - прямо из коробки.
Обратите внимание, что также рекомендуется проверить конфигурацию исходного сервера. В основном это делается для обеспечения оптимальной производительности при повторном подключении к CDN и открытии нового постоянного соединения.

Как CDN могут повысить безопасность SSL / TLS
Проблема: сертификаты низкого уровня и неоптимальные реализации
Как вы, вероятно, уже знаете, связь SSL / TLS зависит от наличия сертификатов SSL. Они содержат информацию о вашем домене и организации, помимо открытого ключа, используемого для инициирования зашифрованной связи.
Здесь важно отметить, что сертификаты SSL различаются по качеству и надежности.

diagram-57@3x.png

Руководство Imperva CDN: не частное соединение

Во-первых, существует разница между сертификатами SSL, приобретенными в официальном центре сертификации (ЦС), и бесплатными (самозаверяющими) сертификатами, которые можно создать с помощью набора инструментов OpenSSL.
Из этих двух сертификат CA явно является гораздо лучшим и более надежным вариантом - настолько, что использование самозаверяющего сертификата заставляет всех ваших посетителей получать тревожное сообщение каждый раз, когда они пытаются получить доступ к вашим ресурсам HTTPS. Это может сильно повлиять на ваш трафик.

Во-вторых, все сертификаты SSL / TLS оцениваются в зависимости от качества их индивидуальной реализации, обычно на основе следующих критериев:
  • Поддержка протокола - предпочтение отдается реализациям, которые обеспечивают соблюдение новейших и наиболее безопасных протоколов.
  • Поддержка обмена ключами - предпочтение отдается реализациям, использующим более надежную криптографию при кодировании ключей сеанса (например, 2048-битный параметр Диффи-Хеллмана).
  • Поддержка шифров - предпочтение отдается реализациям, применяющим шифрование с более надежным шифрованием (например, 256-битным).

diagram-58@3x.png

Руководство по CDN: Общий рейтинг

Поскольку оценка вашего сертификата является общеизвестной и легко определяется с помощью SSLLabs или аналогичного инструмента, она также отражается на мнении пользователей о вашем веб-сайте.
Однако, помимо негативного психологического воздействия, эта оценка информирует вас о том, насколько на самом деле безопасна ваша реализация SSL / TLS и какова вероятность ее взлома. Очевидно, что последнее может привести к финансовым потерям и долгосрочному ущербу для вашего бренда и вашего бизнеса.

Решение: CDN для получения сертификата уровня A + без проблем
Использование CDN означает, что первая ветвь вашего SSL / TLS-соединения всегда устанавливается с использованием собственного сертификата провайдера, размещенного на прокси-сервере CDN. Это дает преимущество автоматической оптимизации аспектов безопасности ваших соединений SSL.
Ваша собственная реализация SSL может быть неоптимальной, и вы можете использовать только бесплатный самозаверяющий сертификат. Однако с того момента, как вы начнете использовать прокси-сервер CDN, все ваши посетители будут немедленно защищены сертификатом уровня A +, подписанным одним из самых надежных центров сертификации в мире.

diagram-59@3x.png

Руководство по CDN: CDN для получения сертификата уровня A + без проблем

Наконец, когда появляются новые уязвимости SSL, что иногда случается, ваш провайдер CDN, скорее всего, отреагирует на них гораздо быстрее, чем вы, обновив свою реализацию SSL как часть вашей управляемой службы.
Так было с уязвимостями Heartbleed и POODLE. Пользователи CDN были одними из первых, кого защитили - почти сразу после появления новостей об уязвимостях.

Бесплатный SSL становится лучше с Let's Encrypt
Let's Encrypt - это открытый центр сертификации, который позволяет легко создавать бесплатные сертификаты SSL. Одним из преимуществ этих сертификатов является то, что они не вызывают вышеупомянутые сигналы тревоги браузера.
Let's Encrypt спонсируется Internet Security Research Group (ISRG), Mozilla Foundation и несколькими другими крупными организациями.

Два лучше, чем один
Даже если CDN автоматически оптимизирует первый этап вашего SSL-соединения, все же рекомендуется улучшить реализацию на втором этапе, настроив конфигурацию SSL на исходном сервере.
Хотя это правда, что сценарии атаки на втором этапе очень маловероятны, применяется давний принцип «лучше перестраховаться, чем сожалеть», особенно если вы ведете крупный бизнес, который, вероятно, станет объектом целевой кибератаки.

CDN для простой активации HSTS
HTTP Strict Transport Security (HSTS) - это функция безопасности, которая обеспечивает доступ к вашему домену только через соединение SSL / TLS. HSTS особенно полезен для веб-сайтов, имеющих несколько поддоменов, поскольку его можно использовать для простого управления SSL / TLS для всех из них в большом количестве.
Большинство современных сетей CDN упрощают реализацию HSTS, предлагая ее как готовую функцию, которой можно управлять прямо с их панели инструментов.

Следующая:
Глава 6: Оптимизация маршрута >
 
Top