Предупреждение AnyConnect о недоверенном сервере: принять или импортировать?
Предупреждение AnyConnect о недоверенном сервере имеет три формы и два ответа. Импорт сертификата шлюза — это постоянное изменение доверия, а не исправление сеанса.
Вы вставляете имя узла шлюза в AnyConnect, окно становится красным или белым, и диалог спрашивает, доверять ли серверу, сертификат которого клиент не может проверить. Естественное движение — нажать и продолжить работу, и это как раз неверный рефлекс. Ответ записывается в настройки клиента на этой машине и действует для последующих подключений, поэтому диалог — это решение о конфигурации в костюме одноразового предупреждения. Вот путь, которым я иду, в том порядке, в каком его показывает клиент.
Начните с предупреждения, которое вы действительно видите
Красный и белый — не косметические варианты. Красное предупреждение означает, что профиль или настройка установлены на блокировку недоверенных серверов, поэтому клиент отказывается продолжать, пока эта настройка не изменится; белое предупреждение означает, что он позволит продолжить, как только вы ответите явно. Есть третий случай, который выглядит так же и ведёт себя иначе: просроченный сертификат, который клиент вообще не предложит импортировать, потому что импорт не сделает его действительным. Различение этих трёх занимает секунду и определяет всё дальнейшее.
За всеми ними стоит короткий список причин: самоподписанный сертификат шлюза, частный CA, которому конечная точка не доверяет, или имя узла, отсутствующее в subject alternative names сертификата. Любая из трёх даёт тот же диалог и требует другого исправления.
Прочитайте сертификат, прежде чем отвечать в диалоге
Откройте сведения о сертификате из предупреждения и посмотрите на три поля, прежде чем касаться кнопки. Subject и SAN должны называть именно тот шлюз, к которому вы хотели попасть, издатель должен быть CA, которым управляет ваша организация, а сроки действия должны покрывать сегодняшний день. Затем сравните отпечаток SHA-256 с копией, полученной не через это подключение, а на внутренней странице документации или в заявке, потому что отпечаток, прочитанный из того же диалога, не доказывает ничего. Если независимой копии нет, у вас нет оснований принимать исключение.
Это шаг, который отделяет лабораторию от продукционного шлюза. На тестовой машине с самоподписанным сертификатом, созданным вчера, нажать и продолжить разумно. На корпоративном шлюзе, где пользователи затем вводят учётные данные, сертификат, который вы не можете проверить, — вероятная схема перехвата, и клиент — единственный компонент, который всё ещё задаёт вопрос.
Знайте, что каждый ответ записывает в хранилище доверия
Ответ да на вопрос об импорте добавляет сертификат шлюза в доверенное хранилище клиента на этой машине. Это не исключение на сеанс: последующие подключения могут завершаться без того же запроса, что и есть цель, а также риск, потому что ничто на экране не напоминает, что исключение существует. Ответ нет продолжает вход только для этого сеанса. Оба пути вас подключают, и только один из них меняет машину.
Если вы на красном пути, первая попытка вовсе не вход. Документированная последовательность ввода — строка connect и затем два подтверждения, которые меняют настройку и завершают работу; скрипт, считающий это успехом, сохранил настройку и ни разу не аутентифицировался. Вопрос об импорте сертификата появляется только при следующей попытке, поэтому люди делают вывод, что запрос возникает периодически.
Этот порядок важен для автоматизации, а не только для пальцев. Скриптовый ответ, который всегда говорит да, продолжает работать после смены шлюза и продолжает доверять любому сертификату, который появится дальше.
Записывайте ответы в том порядке, в каком их запрашивает клиент
Когда клиент предупреждает, но разрешает подключение, ответы приходят в фиксированном порядке: connect, да для продолжения, затем вопрос об импорте, затем группа, имя пользователя и пароль. Записывайте их отдельными строками во входном файле, а не угадывайте время запросов. Отказ от импорта — это изменение одного символа в том же файле, и это более безопасное значение по умолчанию для всего, что работает без присмотра.
connect vpn2.example.net
y
n
GROUP
LOGIN
PASSWORDПредпочитайте распространять CA организации на конечные точки, а не учить каждый скрипт принимать листовой сертификат. Правильно выпущенный сертификат с нужным SAN снимает запрос для всех, сохраняет смысл проверки и не зависит от памяти одной конечной точки о решении. Установка корневого CA — более тяжёлое изменение, чем импорт листового, поэтому относитесь к нему как к управляемому развёртыванию, а не как к ярлыку службы поддержки.
Удалите исключения, которые живут дольше своего шлюза
AnyConnect сохраняет эти настройки для каждой машины, поэтому старые ответы накапливаются на ноутбуках, которые переезжали между офисами. Просмотрите сохранённые настройки и импортированные сертификаты на управляемых конечных точках и проверьте, не указывает ли исключение на имя узла, сменившее владельца. Настройка, принимающая любой недоверенный сервер, шире сертификата, для которого она создана.
Образец, который стоит сохранять, узок: доверенный сертификат для обычного использования, документированная внеполосная проверка отпечатка для временного исключения и назначенный владелец, который удаляет его по завершении миграции. Если на машине, которой вы управляете, обнаружена настройка, принимающая любой сервер, рассматривайте её как находку, а не как удобство.