Два сбоя VPN выглядят из кресла пользователя одинаково, а требуют противоположных исправлений. Несовпадение имени означает, что сертификат действителен, но выдан для другого объекта. Ошибка истечения срока означает, что сертификат недействителен в данный момент. Ни то, ни другое не является проблемой пароля, и сброс учётных данных — самый частый потерянный час в обоих случаях. Прочитайте этап, на котором происходит сбой, прежде чем что-либо трогать.

Текст ошибки и есть диагноз

Клиент сообщает, какая проверка не прошла, даже если сообщение краткое. Несовпадение называет ожидаемое имя хоста и найденное имя. Ошибка истечения упоминает даты действия или время. Эти два предложения указывают на разные части сертификата.

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

Если сбой меняется от попытки к попытке, есть третья возможность: более одного узла за одним и тем же именем.

Проверки имени: что сравнивает клиент

Клиент сравнивает ожидаемую по конфигурации идентичность с именами в сертификате, которые находятся в расширении subjectAltName. Необработанный IP в профиле, псевдоним, который сертификат не перечисляет, или имя, которое просто разрешается в тот же сервер, — все они не проходят эту проверку. Достичь нужной машины — не то же самое, что предъявить нужную идентичность.

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

openssl s_client -connect vpn.example.com:443 -servername vpn.example.com </dev/null 2>/dev/null \
  | openssl x509 -noout -subject -dates -ext subjectAltName

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

Истечение срока: чьи часы читаются

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

Сравните даты сертификата с UTC на клиенте, прежде чем делать выводы:

openssl x509 -in cert.pem -noout -dates
date -u

Если даты действительно прошли, продлите через издателя. Если замена существует, но ещё не вступила в силу, следуйте поддерживаемому переходу, а не переводите часы, чтобы подстроиться под неё. Возврат даты устройства назад ради сертификата — решение с последствиями далеко за пределами туннеля.

Почему исправление одного обнажает другое

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

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

Именно эта деталь превращает нестабильный тикет в воспроизводимый.

Докажите это новым подключением

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

Сохраняйте точный этап ошибки и сведения о сертификате вместе с тикетом.

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

Похожие статьи