Відкликаний клієнт усе ще підключається: список так і не дійшов
Відкликання — це вхідні дані для перевірки сертифіката, а не команда, що завершує сесію. Порівняйте, як бачать список нове підключення і робочий тунель.
Відкликання ніколи не проникає в робочий тунель, щоб видалити сесію. Список — це вхідні дані для перевірки сертифіката, і його читають під час обміну каналу керування, з якого починається сесія TLS. Цей один факт пояснює обидва сюрпризи: відкликаний клієнт підключається знову, бо список так і не дійшов до перевіряльника, а наявна сесія виживає, бо ніхто нічого не переперевірив.
Список — це вхідні дані, а не дія
Під час встановлення сесії сервер перевіряє сертифікат клієнта за своїми якорями довіри, а директива відкликання додає до цього рішення пошук у списку. Перевірка відбувається на сервері, тому клієнт не може побачити, що його сертифікат відкликано, і продовжує пропонувати той самий. Тому профіль, який усе ще підключається, доводить лише те, що якийсь перевіряльник прийняв ланцюг, а не те, що відкликання не спрацювало.
Сам список — це підписаний об'єкт із датою випуску та датою наступного оновлення. Сторонній список, список, підписаний іншим органом, або той, чия дата наступного оновлення минула, не замінюють поточний, і те, чи відхиляється застарілий список чи мовчки приймається, залежить від розгортання.
Нове підключення проти робочої сесії
Відкликання оцінюється під час встановлення або переузгодження сесії, а не щодо каналу даних на кожному пакеті. У клієнта, який уже підключений, є ключі трафіку, тому він продовжує пропускати пакети після того, як його сертифікат з'явився в списку. Інтервал переузгодження за замовчуванням вимірюється годинами, тому оновлений список може набути чинності для нових, поки робочий тунель залишається.
| Situation | What the list does | When it applies |
|---|---|---|
| Fresh connection | Blocks the handshake | At verification, immediately |
| Renegotiation | Blocks the new exchange | At the next renegotiation interval |
| Established data channel | Nothing | Until the session ends |
Негайне застосування вимагає усвідомленої дії, а не лише списку. Перезапуск служби змушує кожного клієнта підключитися заново, тоді як завершення однієї сесії через інтерфейс керування залишає інші недоторканими. Виберіть один варіант на інцидент і запишіть, який використали. Два варіанти мають різний радіус впливу, і це справжнє рішення.
Доставте файл, який перевіряльник справді читає
Список потрібно згенерувати із запису органу, а потім скопіювати на кожну машину, яка перевіряє сертифікати. Згенерувати його на хості CA і ніколи не встановити на сервері — найпоширеніша помилка, і вона виглядає точно як зламана функція відкликання.
ca ca.crt
cert server.crt
key server.key
crl-verify /etc/openvpn/crl.pem
Дві деталі вирішують, чи справді читається файл. Відносний шлях розв'язується відносно каталогу конфігурації, тому копія, залишена в домашньому каталозі оператора, може ніколи не знайтися. А демон зазвичай після запуску відмовляється від привілеїв, тому обліковому запису виконання потрібні право пошуку в кожному батьківському каталозі та право читання файлу. Перевіряйте обидва від облікового запису виконання, а не від root, інакше тест доведе не те.
На хостах systemd посилений unit теж може приховати шлях — поданням лише для читання або захищеним системним каталогом. Зсередини служби це не відрізнити від відсутнього файлу, тому перевірте обмеження unit, перш ніж шукати помилку в правах. Прочитайте файл unit, перш ніж звинувачувати режим файлу.
Підтверджуйте на сервері, а не на клієнті
Журнал сервера називає, що сталося: відкриття списку, його завантаження або збій перевірки з відкликаним серійним номером. Клієнт повідомляє лише про загальну помилку рукостискання, тому журнали клієнта — погане місце для пошуку рішення про відкликання.
Перевірте свіжою спробою з відкликаного профілю і потім зупиніться. Успішне підключення з цього профілю — сигнал перевірити шлях до файлу й обліковий запис виконання, а не припускати, що список був неправильний. Збережіть цю успішну спробу як приймальний тест і не рахуйте перепідключення, якого ви не спостерігали.
Що нічого не відкликає
Видалення профілю з ноутбука, видалення файлу сертифіката з клієнта або прохання до користувача припинити підключатися нічого не змінюють на сервері. Сертифікат залишається чинним, доки орган не зафіксує відкликання, а перевіряльник не прочитає отриманий список.
Тому ланцюг варто записати: зафіксуйте відкликання, згенеруйте й підпишіть список, поширте саме цей файл і підтвердіть, що службовий обліковий запис може його прочитати. Кожна ланка коротка, і будь-яка відсутня залишає відкликаного клієнта весело підключатися. Контрольний список із чотирьох рядків кращий за припущення без жодного.