Призупинити одного клієнта OpenVPN, не відкликаючи його сертифікат
Тимчасове блокування має бути на сервері, а не в реєстрі CA. Використовуйте директиву disable для конкретного клієнта, завершуйте активні сеанси й відкликайте сертифікат лише в разі компрометації.
Коли ноутбук на тиждень потрапляє на ремонтний стіл, звичний рефлекс — видалити його сертифікат із CA. Цей запис — реєстр видавця, а не тимчасовий перемикач доступу. OpenVPN уже має механізм для кожного клієнта, щоб відмовити в з'єднанні, і його використання зберігає історію CA недоторканою. Два елементи керування відповідають на різні питання, і їх змішування створює роботу, коли пристрій повертається.
Два записи, дві різні задачі
База даних CA фіксує, що видавець підписав і що він згодом відкликав. До неї звертаються процедури відкликання та все, що читає CRL або власну копію реєстру. Правило доступу живе на сервері й застосовується до з'єднань, які цей сервер приймає.
Видалення запису про видачу не відкликає сертифікат надійно й пошкоджує історію, від якої залежать подальше відкликання або аудит. Керування на боці сервера вужче й зворотне. Запишіть різницю в примітці до зміни, щоб наступна людина не шукала відкликання, якого ніколи не було.
Розмістіть директиву вимкнення в правильному файлі
Для громадського сервера, що використовує конфігурацію для конкретного клієнта, задокументована директива disable відмовляє одному вибраному клієнту. Вона належить до файлу цього клієнта в активному client-config-dir, а не до основної конфігурації сервера. Перевірте каталог, який фактично використовує працюючий демон, потім підтвердьте ідентичність, що вибирає файл. Файл, названий за неправильним спільним ім'ям, виглядає правильно і ніколи не читається.
disable
Вибір зіставлення тут важливий. Такі параметри, як username-as-common-name, змінюють те, яку ідентичність використовує пошук, тому файл, названий за суб'єктом сертифіката, може не бути застосованим. Читайте довідку OpenVPN для встановленої версії, а не припускайте, що директива чинна в будь-якому контексті.
Відокремте новий допуск від активних сеансів
Відмова в наступному рукостисканні не завершує тунель, який уже піднято. Якщо пристрій треба відключити зараз, використайте також дозволений шлях керування сеансами сервера саме для цього сеансу. Інакше клієнт може продовжувати працювати, доки сам не перепідключиться, а закриття кришки ноутбука або вихід із клієнта — це дія на боці клієнта, яка нічого не говорить про сервер.
Перевірте обидва результати: активний сеанс припиняється, коли ви цього хочете, і нове рукостискання відхиляється. Закрите вікно клієнта нічого не доводить про політику сервера.
Якщо розгортання не має підтримуваного способу завершити активний сеанс, зафіксуйте цю прогалину, а не вигадуйте його. Заблокований порт на клієнті — не те саме, що політика на боці сервера.
Пауза й компрометація — різні події
Загублений або викрадений ключ — це подія відкликання, і локальна пауза доступу її не замінює. Інші сервери, що довіряють тому ж CA, не поділятимуть це правило конкретного клієнта. Дотримуйтеся процесу відкликання й заміни видавця та тримайте базу даних CA як авторитетний запис. Тимчасова пауза, навпаки, потребує задокументованої причини й кроку відновлення.
Коли доступ відновлено, зніміть обмеження через компонент, який ним володіє, і підтвердьте, що нове з'єднання успішне. Запишіть також шлях до рядка disable, бо подальша синхронізація конфігурації може тихо повернути його. Тримайте паузу, її власника й дату в нотатках про розгортання, щоб наступний адміністратор через місяці не знайшов незрозумілого рядка disable.