Jedna nazwa wspólna, dwa certyfikaty: lista dozwolonych czy unieważnienie?
Ponowne wydanie certyfikatu dla tej samej nazwy wspólnej pozostawia stary ważny. Lista nazw nie potrafi ich rozróżnić; potrafi to tylko CRL albo sprawdzenie numeru seryjnego.
Ponowne wydanie certyfikatu laptopa pod tą samą nazwą wspólną wygląda jak wymiana, a wszyscy zakładają, że stary jest martwy. Nie jest. Poprzednik pozostaje ważnym certyfikatem podpisanym przez ten sam urząd, a każda kontrola, która dopuszcza klientów po nazwie, będzie go nadal dopuszczać. To, co oddziela sprawdzenie tożsamości od sprawdzenia poświadczenia, to numer seryjny, i tam należy poprawka.
Zacznij od polityki nazewnictwa używanej przez serwer
Dwie kontrole się mylą: dopuszczanie klienta dlatego, że deklaruje, kim jest, oraz wycofywanie jednego konkretnego certyfikatu z eksploatacji. Pierwsza to sprawdzenie nazwy, druga to sprawdzenie unieważnienia. Odpowiadają na różne pytania, a wdrożenie może mieć jedną bez drugiej.
Przeczytaj konfigurację serwera i zanotuj, które źródło tożsamości jest w użyciu. username-as-common-name czyni uwierzytelnioną nazwę użytkownika efektywną nazwą dla zapytań specyficznych dla klienta. Bez tego używana jest nazwa wspólna podmiotu z certyfikatu. Jakakolwiek jest odpowiedź, zapisz ją, zanim dotkniesz jakiejkolwiek listy dozwolonych.
Obie ścieżki dają inny zestaw dozwolonych nazw dla tego samego certyfikatu. Zgadywanie oznacza edycję niewłaściwego pliku i wniosek, że kontrola nie działa.
Sprawdź, co faktycznie dopuszcza klienta
Powiązany z pasującym plikiem client-config-dir dostarcza opcje specyficzne dla klienta; sam w sobie nie jest regułą dopuszczania. Dopuszczanie po nazwie wymaga ccd-exclusive, który odrzuca klientów bez pasującego pliku. Włączenie tego na działającym wdrożeniu odłącza wszystkich, których nazwa nie ma pliku, więc policz pliki, zanim cokolwiek przełączysz.
grep -nE 'ccd-exclusive|client-config-dir|username-as-common-name' /etc/openvpn/server/server.conf
ls -1 /etc/openvpn/ccd/Liczba jest sprawdzeniem: porównaj listę katalogu z tożsamościami, których połączenia oczekujesz.
Następnie potwierdź, że każda nazwa pliku dokładnie odpowiada efektywnej tożsamości, w tym wielkość liter i spacje. Plik dla office-laptop nic nie robi certyfikatowi, którego podmiot brzmi Office-Laptop. Spacje na końcu również ukrywają się przed zwykłą listą, i dlatego plik, który wygląda na obecny, pozostaje nieprzeczytany.
Sprawdź CRL, którą ładuje brama
CRL nazywa unieważnione certyfikaty po wystawcy i numerze seryjnym, i to jest szczegółowość, której brakuje sprawdzeniu nazwy. Dwa certyfikaty mogą dzielić nazwę wspólną i różnić się numerem seryjnym, a tylko lista na poziomie numeru seryjnego je rozdziela.
Potwierdź skonfigurowaną ścieżkę, datę wystawienia i pole następnej aktualizacji, zanim w ogóle zaufasz plikowi.
openssl crl -in /etc/openvpn/crl.pem -noout -lastupdate -nextupdate
openssl x509 -in office-laptop.crt -noout -serial -subjectPorównaj numer seryjny w CRL z numerem seryjnym certyfikatu, który zamierzasz zachować. To porównanie to cały test, a zrobienie go raz naocznie jest warte więcej niż zaufanie skryptowi, którego nikt nie przeczytał. Rozprowadź zaktualizowaną CRL ścieżką, którą brama już czyta. CRL w niewłaściwym katalogu niczego nie egzekwuje, i żaden log klienta o niej nie wspomni.
Zastąp, a potem udowodnij oba wyniki
Wydaj zamiennik pod tą samą nazwą wspólną, zapisz oba numery seryjne i dopiero wtedy unieważnij stary. Ta kolejność utrzymuje działającą tożsamość dostępną, gdy przygotowujesz zmianę.
Najpierw przetestuj zamiennik: powinien się uwierzytelnić i dotrzeć do wszystkiego, do czego jego nazwa daje prawo. Następnie przetestuj stary certyfikat i potwierdź, że jest odrzucany, ponieważ udana wymiana nic nie mówi o unieważnieniu. Jeśli oba nadal się łączą, dane wejściowe unieważnienia nie są czytane albo stary numer seryjny nigdy nie został wpisany. Jeśli żaden się nie łączy, zepsułeś regułę dopuszczania, a nie poświadczenie.
Sesje już nawiązane to osobna sprawa, ponieważ unieważnienie dotyczy nowych uwierzytelnień, chyba że brama jest też skonfigurowana do zrywania aktywnych połączeń. Zdecyduj, czy natychmiastowe usunięcie jest konieczne, zanim komukolwiek to obiecasz.
Czego sprawdzenie nazwy nigdy nie potrafi
Lista dozwolonych odpowiada, czy ta tożsamość może się połączyć. Nie potrafi powiedzieć, którego certyfikatu użyła ta tożsamość, i będzie dopuszczać starsze poświadczenie tak długo, jak pozostaje ważne i nieunieważnione. Ta luka ujawnia się podczas incydentu, gdy zamiennik wydano miesiące temu, a poprzednik wciąż działa.
Tam, gdzie wymagana jest kontrola na poziomie certyfikatu, użyj mechanizmu, który nazywa certyfikat: wpisów CRL albo haka weryfikacji, który sprawdza odcisk palca utrzymywany przez operatora. Oba kosztują utrzymanie i oba są uczciwe wobec obiektu, który badają. Podręcznik OpenVPN 2.6 dokumentuje crl-verify i dopuszczanie specyficzne dla klienta jako osobne opcje, właśnie z tego powodu.
Zapisz, która kontrola wykonuje które zadanie, a potem przetestuj przypadek negatywny. Unieważnienie, którego nigdy nie widziałeś odrzucającego połączenie, to konfiguracja, która, jak masz nadzieję, działa.