В современных системах на одном IP-адресе зачастую хостится много сервисов. И у каждого сервиса должен быть свой сертификат безопасности. Чтобы различать сертификаты на одном IP, в дополнение к SSL был придуман стандарт SNI.
SNI (Server Name Identification) — это расширение протокола TLS, которое указывает, к какому сайту пытается подключиться посетитель в начале установления соединения.
SNI позволяет ещё до SSL-хендшейка уточнить, какой именно сертификат нужен. Но чтобы всё работало, клиентский браузер должен поддерживать SNI.
Однако технологию SNI поддерживают не все браузеры. И в таком случае возникнет сообщение о неверном SSL-сертификате.
Старые версии серверного ПО и браузеров не поддерживают SNI (например, Internet Explorer 6 и 7 под Windows XP или Android 2.0).
Некоторый софт построен на древних фреймворках, от которых клиенты не хотят отказываться. Обновляться они точно не будут, а доступность сервисов критична.
Тогда для клиентов, использующих устаревшие версии браузеров и фреймворков, можно выделять отдельный адрес, где без SNI выдаётся только сертификат, который ждёт софт этого клиента. Но это дорого и неудобно в администрировании.
Если SNI не запрошен, мы выдаём в качестве default-сертификата *.gcdn.co. Остаётся лишь одно требование: клиентский CNAME должен быть на домене *.gcdn.co. Тогда SNI не будет запрошен и ему отдастся этот дефолтный сертификат.
Эту фичу мы называем nonSNI. И для некоторых наших клиентов наличие nonSNI в CDN — это важное преимущество.
Браузеры, поддерживающие SNI:
Мобильные платформы, поддерживающие SNI: