Відкликання ніколи не проникає в робочий тунель, щоб видалити сесію. Список — це вхідні дані для перевірки сертифіката, і його читають під час обміну каналу керування, з якого починається сесія TLS. Цей один факт пояснює обидва сюрпризи: відкликаний клієнт підключається знову, бо список так і не дійшов до перевіряльника, а наявна сесія виживає, бо ніхто нічого не переперевірив.

Список — це вхідні дані, а не дія

Під час встановлення сесії сервер перевіряє сертифікат клієнта за своїми якорями довіри, а директива відкликання додає до цього рішення пошук у списку. Перевірка відбувається на сервері, тому клієнт не може побачити, що його сертифікат відкликано, і продовжує пропонувати той самий. Тому профіль, який усе ще підключається, доводить лише те, що якийсь перевіряльник прийняв ланцюг, а не те, що відкликання не спрацювало.

Сам список — це підписаний об'єкт із датою випуску та датою наступного оновлення. Сторонній список, список, підписаний іншим органом, або той, чия дата наступного оновлення минула, не замінюють поточний, і те, чи відхиляється застарілий список чи мовчки приймається, залежить від розгортання.

Нове підключення проти робочої сесії

Відкликання оцінюється під час встановлення або переузгодження сесії, а не щодо каналу даних на кожному пакеті. У клієнта, який уже підключений, є ключі трафіку, тому він продовжує пропускати пакети після того, як його сертифікат з'явився в списку. Інтервал переузгодження за замовчуванням вимірюється годинами, тому оновлений список може набути чинності для нових, поки робочий тунель залишається.

SituationWhat the list doesWhen it applies
Fresh connectionBlocks the handshakeAt verification, immediately
RenegotiationBlocks the new exchangeAt the next renegotiation interval
Established data channelNothingUntil the session ends

Негайне застосування вимагає усвідомленої дії, а не лише списку. Перезапуск служби змушує кожного клієнта підключитися заново, тоді як завершення однієї сесії через інтерфейс керування залишає інші недоторканими. Виберіть один варіант на інцидент і запишіть, який використали. Два варіанти мають різний радіус впливу, і це справжнє рішення.

Доставте файл, який перевіряльник справді читає

Список потрібно згенерувати із запису органу, а потім скопіювати на кожну машину, яка перевіряє сертифікати. Згенерувати його на хості CA і ніколи не встановити на сервері — найпоширеніша помилка, і вона виглядає точно як зламана функція відкликання.

ca ca.crt
cert server.crt
key server.key
crl-verify /etc/openvpn/crl.pem

Дві деталі вирішують, чи справді читається файл. Відносний шлях розв'язується відносно каталогу конфігурації, тому копія, залишена в домашньому каталозі оператора, може ніколи не знайтися. А демон зазвичай після запуску відмовляється від привілеїв, тому обліковому запису виконання потрібні право пошуку в кожному батьківському каталозі та право читання файлу. Перевіряйте обидва від облікового запису виконання, а не від root, інакше тест доведе не те.

На хостах systemd посилений unit теж може приховати шлях — поданням лише для читання або захищеним системним каталогом. Зсередини служби це не відрізнити від відсутнього файлу, тому перевірте обмеження unit, перш ніж шукати помилку в правах. Прочитайте файл unit, перш ніж звинувачувати режим файлу.

Підтверджуйте на сервері, а не на клієнті

Журнал сервера називає, що сталося: відкриття списку, його завантаження або збій перевірки з відкликаним серійним номером. Клієнт повідомляє лише про загальну помилку рукостискання, тому журнали клієнта — погане місце для пошуку рішення про відкликання.

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

Що нічого не відкликає

Видалення профілю з ноутбука, видалення файлу сертифіката з клієнта або прохання до користувача припинити підключатися нічого не змінюють на сервері. Сертифікат залишається чинним, доки орган не зафіксує відкликання, а перевіряльник не прочитає отриманий список.

Тому ланцюг варто записати: зафіксуйте відкликання, згенеруйте й підпишіть список, поширте саме цей файл і підтвердіть, що службовий обліковий запис може його прочитати. Кожна ланка коротка, і будь-яка відсутня залишає відкликаного клієнта весело підключатися. Контрольний список із чотирьох рядків кращий за припущення без жодного.

Схожі статті