Сертификаты и рукопожатие — Примеры

Пример 1 — Имя хоста, которое сертификат не покрывает

Новый поддомен магазина добавлен и направлен на существующий балансировщик. Используемый сертификат перечисляет только основной домен и его вариант с www. Читатель пробует новое имя и получает жёсткую ошибку браузера, а не предупреждение. Разберитесь, что проверяет клиент и что нужно выпустить, прежде чем имя загрузится.

SAN сертификата:   DNS: example.com, DNS: www.example.com
Используемые имена: example.com, www.example.com, shop.example.com

Решение

Пользователи набирают: shop.example.com
  -> сертификат действителен только для example.com, www.example.com
  -> несовпадение имени, браузер блокирует до отдачи любой страницы
Исправление: выпустите сертификат со всеми обслуживаемыми именами, затем
     перезагрузите его на слушателе и перепроверьте каждое имя снаружи сети

Сертификат связывает набранное пользователем имя с открытым ключом, и клиент отказывает в соединении, когда имя не перечислено. Обычная ошибка — покрыть apex и забыть поддомен, или наоборот: отсутствие варианта с www — настоящий простой для любого, кто его наберёт. Маска покрывает только один уровень и всё равно должна лежать под тем же родительским доменом.

Пример 2 — Цепочка, которая работает в офисе

Сотрудники загружают сайт, а свежий посетитель с телефона — нет, и ошибка называет сертификат, а не сеть. Слушатель отправляет только собственный сертификат. Исправление — отправить ещё и промежуточное звено, в правильном порядке. Опишите, что проверяет клиент и как убедиться в этом снаружи.

Рукопожатие TLS:
  сервер -> только листовой сертификат
  клиент -> идёт по цепочке, не находит связи с доверенным корнем
  итог   -> соединение прервано, только у свежих клиентов

Решение

Рукопожатие TLS:
  сервер -> листовой сертификат, затем промежуточные, по порядку
  клиент -> лист, вверх через промежуточное, к уже доверенному корню
  итог   -> сессия продолжается; ключ шифрования выведен, канал установлен
Проверка: подключайтесь снаружи сети хостинга свежим клиентом для каждого
  обслуживаемого имени хоста и подтвердите цепочку, имя и остаток > 30 дней

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