Оттеглянето никога не влиза в работещ тунел, за да изтрие сесия. Списъкът е входни данни за проверка на сертификата и се чете при обмена по канала за управление, с който започва сесия 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 файла, преди да обвините режима на файла.

Потвърдете на сървъра, а не на клиента

Сървърният журнал казва какво е станало: отваряне на списъка, зареждането му или неуспешна проверка с оттегления сериен номер. Клиентът съобщава само общ отказ на ръкостискане, затова клиентските журнали са лошо място за търсене на решение за оттегляне.

Проверете с нов опит от оттегления профил и спрете. Успешна връзка от този профил е сигналът да прегледате пътя до файла и акаунта за изпълнение, а не да предполагате, че списъкът е грешен. Запазете този успешен опит като приемен тест и не броите повторно свързване, което не сте наблюдавали.

Какво не оттегля нищо

Изтриването на профила от лаптоп, премахването на файла със сертификата от клиента или казването на потребителя да спре да се свързва не променя нищо на сървъра. Сертификатът остава валиден, докато органът запише оттеглянето и проверяващият прочете получения списък.

Затова си струва веригата да се запише: запишете оттеглянето, генерирайте и подпишете списъка, разпространявайте точно този файл и потвърдете, че акаунтът на услугата може да го чете. Всяка връзка е кратка и всяка липсваща оставя оттеглен клиент да се свързва доволно. Контролен списък с четири реда е по-добър от предположение без нито един.

Подобни статии