Odwołanie nigdy nie wchodzi do działającego tunelu, aby usunąć sesję. Lista jest danym wejściowym weryfikacji certyfikatu i jest czytana podczas wymiany kanału sterującego, która rozpoczyna sesję TLS. Ten jeden fakt wyjaśnia obie niespodzianki: odwołany klient łączy się ponownie, ponieważ lista nigdy nie dotarła do weryfikatora, a istniejąca sesja przetrwa, ponieważ nikt niczego nie zweryfikował ponownie.

Lista jest daną wejściową, a nie czynnością

Podczas ustanawiania sesji serwer weryfikuje certyfikat klienta wobec swoich kotwic zaufania, a dyrektywa odwołania dodaje do tej decyzji wyszukiwanie na liście. Sprawdzenie odbywa się na serwerze, więc klient nie może zobaczyć, że jego certyfikat został odwołany, i nadal oferuje ten sam. Profil, który nadal się łączy, dowodzi zatem jedynie, że jakiś weryfikator zaakceptował łańcuch, a nie że odwołanie zawiodło.

Sama lista jest podpisanym obiektem z datą wystawienia i datą następnej aktualizacji. Niepowiązana lista, lista podpisana przez inny organ lub taka, której data następnej aktualizacji minęła, nie zastępuje bieżącej, a to, czy nieaktualna lista jest odrzucana, czy po cichu akceptowana, zależy od wdrożenia.

Nowe połączenie a działająca sesja

Odwołanie jest oceniane przy ustanawianiu lub renegocjacji sesji, a nie wobec kanału danych przy każdym pakiecie. Klient, który jest już połączony, ma klucze ruchu, więc nadal przepuszcza pakiety po tym, jak jego certyfikat pojawi się na liście. Domyślny interwał renegocjacji mierzy się w godzinach, dlatego zaktualizowana lista może zadziałać dla nowych, podczas gdy działający tunel pozostaje.

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

Natychmiastowe egzekwowanie wymaga świadomego działania, a nie tylko listy. Restart usługi wymusza ponowne połączenie każdego klienta, natomiast zakończenie jednej sesji przez interfejs zarządzania pozostawia pozostałe nietknięte. Wybierz jedno na każdy incydent i zapisz, którego użyłeś. Obie opcje mają inny zakres wpływu i to jest prawdziwa decyzja.

Dostarcz plik, który weryfikator naprawdę czyta

Lista musi zostać wygenerowana z rejestru organu, a następnie skopiowana na każdą maszynę, która weryfikuje certyfikaty. Wygenerowanie jej na hoście CA i nigdy nieinstalowanie na serwerze to najczęstsza awaria, która wygląda dokładnie jak zepsuta funkcja odwoływania.

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

O tym, czy plik jest naprawdę czytany, decydują dwa szczegóły. Ścieżka względna jest rozwiązywana wobec katalogu konfiguracji, więc kopia zostawiona w katalogu domowym operatora może nigdy nie zostać znaleziona. A demon zwykle po starcie zrzeka się uprawnień, więc konto wykonawcze potrzebuje prawa wyszukiwania w każdym katalogu nadrzędnym oraz prawa odczytu pliku. Sprawdź oba kontem wykonawczym, a nie jako root, inaczej test dowodzi niewłaściwej rzeczy.

Na hostach systemd utwardzona jednostka może też ukryć ścieżkę, widokiem tylko do odczytu lub chronionym katalogiem systemowym. Wewnątrz usługi jest to nieodróżnialne od brakującego pliku, więc sprawdź ograniczenia jednostki, zanim zaczniesz szukać błędu uprawnień. Przeczytaj plik jednostki, zanim obwinisz tryb pliku.

Potwierdź na serwerze, nie na kliencie

Log serwera nazywa to, co się stało: otwarcie listy, jej wczytanie lub nieudaną weryfikację z odwołanym numerem seryjnym. Klient zgłasza tylko ogólny błąd uzgadniania, dlatego logi klienta są złym miejscem do szukania decyzji o odwołaniu.

Zweryfikuj świeżą próbą z odwołanego profilu i na tym poprzestań. Udane połączenie z tego profilu jest sygnałem, by zbadać ścieżkę pliku i konto wykonawcze, a nie by zakładać, że lista była błędna. Zachowaj tę udaną próbę jako test odbiorczy i nie licz ponownego połączenia, którego nie obserwowałeś.

Co niczego nie odwołuje

Usunięcie profilu z laptopa, zabranie pliku certyfikatu z klienta lub powiedzenie użytkownikowi, żeby przestał się łączyć, niczego nie zmienia na serwerze. Certyfikat pozostaje ważny, dopóki organ nie zapisze odwołania i weryfikator nie odczyta wynikowej listy.

Dlatego warto zapisać łańcuch: zapisz odwołanie, wygeneruj i podpisz listę, rozprowadź dokładnie ten plik i potwierdź, że konto usługi może go odczytać. Każde ogniwo jest krótkie, a brak któregokolwiek sprawia, że odwołany klient wesoło się łączy. Lista kontrolna z czterech linii bije założenie bez ani jednej.

Powiązane artykuły