Приостановить одного клиента OpenVPN, не отзывая его сертификат
Временная блокировка должна находиться на сервере, а не в реестре CA. Используйте директиву disable для конкретного клиента, завершите активные сеансы и отзывайте сертификат только при компрометации.
Когда ноутбук на неделю попадает на ремонтный стол, обычный рефлекс — удалить его сертификат из CA. Эта запись — реестр издателя, а не временный переключатель доступа. OpenVPN уже имеет механизм для каждого клиента, чтобы отказать в соединении, и его использование сохраняет историю CA нетронутой. Два элемента управления отвечают на разные вопросы, и их смешение создаёт работу, когда устройство возвращается.
Две записи, две разные задачи
База данных CA фиксирует, что издатель подписал и что он позже отозвал. К ней обращаются процедуры отзыва и всё, что читает CRL или собственную копию реестра. Правило доступа живёт на сервере и применяется к соединениям, которые этот сервер принимает.
Удаление записи о выпуске не отзывает сертификат надёжно и повреждает историю, от которой зависят последующий отзыв или аудит. Управление на стороне сервера уже и обратимо. Запишите различие в примечании к изменению, чтобы следующий человек не искал отзыв, которого никогда не было.
Поместите директиву отключения в правильный файл
Для общинного сервера, использующего конфигурацию для конкретного клиента, документированная директива disable отказывает одному выбранному клиенту. Она принадлежит файлу этого клиента в активном client-config-dir, а не основной конфигурации сервера. Убедитесь в каталоге, который фактически использует работающий демон, затем подтвердите идентичность, выбирающую файл. Файл, названный по неверному общему имени, выглядит правильным и никогда не читается.
disable
Выбор сопоставления здесь важен. Такие параметры, как username-as-common-name, меняют то, какую идентичность использует поиск, поэтому файл, названный по субъекту сертификата, может не быть применённым. Читайте справочник OpenVPN для установленной версии, а не предполагайте, что директива действительна в любом контексте.
Отделите новый допуск от активных сеансов
Отказ в следующем рукопожатии не завершает туннель, который уже поднят. Если устройство нужно отключить сейчас, используйте также разрешённый путь управления сеансами сервера именно для этого сеанса. Иначе клиент может продолжать работать, пока сам не переподключится, а закрытие крышки ноутбука или выход из клиента — это действие на стороне клиента, которое ничего не говорит о сервере.
Проверьте оба результата: активный сеанс прекращается, когда вы этого хотите, и новое рукопожатие отклоняется. Закрытое окно клиента ничего не доказывает о политике сервера.
Если в развёртывании нет поддерживаемого способа завершить активный сеанс, зафиксируйте этот пробел, а не изобретайте его. Заблокированный порт на клиенте — не то же самое, что политика на стороне сервера.
Пауза и компрометация — разные события
Потерянный или украденный ключ — это событие отзыва, и локальная пауза доступа его не заменяет. Другие серверы, доверяющие тому же CA, не будут использовать это правило конкретного клиента. Следуйте процессу отзыва и замены издателя и держите базу данных CA в качестве авторитетной записи. Временная пауза, напротив, требует документированной причины и шага восстановления.
Когда доступ восстановлен, снимите ограничение через компонент, который им владеет, и подтвердите, что новое соединение успешно. Запишите также путь к строке disable, потому что последующая синхронизация конфигурации может тихо вернуть её. Храните паузу, её владельца и дату в заметках о развёртывании, чтобы следующий администратор через месяцы не нашёл необъяснимую строку disable.