Unieważnianie certyfikatów OpenVPN
Wyobraź sobie, że do wczoraj współpracował z Tobą John z firmy Contoso. Jako administrator VPNa nie przewidziałeś sytuacji, że John wywiąże się z umowy przed czasem i ustawiłeś mu czas ważności certyfikatu zgodnie z datą końca umowy na konfigurację serwerów, a certyfikat VPN jest ważny jeszcze ponad miesiąc. Na Twoje szczęście istnieje możliwość odcięcia dostępu do VPNa dla osób i urządzeń, których już z Wami nie ma.
Jeśli chcesz zobaczyć instrukcję video – kliknij 🙂

Ratunkiem jest odwoływanie certyfikatów
Istnieje coś takiego jak odwoływanie certyfikatów nazywane również unieważnianiem. Proces ten polega na unieważnieniu wcześniej podpisanego certyfikatu, co uniemożliwi uwierzytelnienie się nim w konkretnym systemie, np. SSH lub VPN.
Kiedy najczęściej korzystamy z unieważniania certyfikatów
Najczęstszymi powodami, dla których korzystamy z tej procedury są:
- Klucz prywatny skojarzony z certyfikatem został skompromitowany
- Użytkownik zaszyfrowanego klucza prywatnego zapomniał hasła do klucza (dotyczy scenariuszy z dodatkowym zabezpieczeniem hasłem)
- Chcesz zakończyć dostęp użytkownika do usługi, np. VPN
Powyższa lista zawiera interesujący nas powód, czyli zakończenie dostępu.

Zaraz John z Contoso się zdziwi jak nie będzie w stanie połączyć się z naszą siecią 😉
Oto co należy zrobić, aby odciąć Johna od naszej sieci
- Korzystając ze swojego ulubionego klienta SSH połącz się z systemem, na którym jest zainstalowane CA.
- W zależności od uprawnień na jakich działasz w obrębie CA, może być wymagane podwyższenie uprawnień. W tym celu przeloguj się na roota:
$
sudo su
- Przejdź do katalogu zarządzania Twoim CA, w testowym przypadku jest to katalog /nap-ca:
#
cd /nap-ca
- W celu odwołania certyfikatu Johna wykonaj polecenie (zamiast
john@contoso.com
możesz wpisać inną nazwę certyfikatu):#
./easyrsa revoke john@contoso.com
- W przypadku pytania czy wiesz co robisz odpowiedz twierdząco yes
Przykład komunikatu z pytaniem czy chcesz kontynuować - Wygeneruj listę odwołanych klientów:
#
./easyrsa gen-crl
- Wyświetl wygenerowaną listę clr.pem i skopiuj jej treść do zewnętrznego pliku lub schowka:
#
less ./pki/crl.pem

Kolejnym etapem będzie przeniesienie listy odwołanych certyfikatów do serwera OpenVPN. W naszym scenariuszu CA i serwer OpenVPN działają w dwóch odizolowanych od siebie systemach, dlatego musimy posłużyć się zewnętrznym schowkiem. Jeśli łączysz się z obiema systemami wykorzystując klienta SSH, do tego celu możesz wykorzystać schowek systemu operacyjnego.
- Korzystając ze swojego ulubionego klienta SSH połącz się z systemem, na którym jest zainstalowany serwer OpenVPN.
- Przeloguj się na roota:
$
sudo su
- Przejdź do katalogu konfiguracyjnego serwera OpenVPN:
#
cd /etc/openvpn
- Otwórz do edycji plik ./crl.pem
#
nano ./crl.pem
- W wyświetlonym edytorze wklej zawartość pliku
crl.pem
, który wygenerowałeś na CA. Zapisz i zamknij edytor. - Otwórz do edycji plik ./server.conf
#
nano ./server.conf
- W otwartym edytorze zlokalizuj linię:
Jeśli podana linia jest zakomentowana to ją odkomentuj. Jeśli jej nie ma to dodaj ją ręcznie.crl-verify crl.pem
- Zrestartuj usługę OpenVPN, aby odłączyć podłączonego Johna:
#
service openvpn restart
- Możesz jeszcze sprawdzić logi, aby zweryfikować czy i kiedy John został odłączony od VPNa:
$
less /var/log/openvpn/openvpn.log | grep john
Co na to John?
Podczas restartu usługi OpenVPN wszystkie klienty na chwilę zostały rozłączone, ale tylko klient Johna nie mógł się ponownie podłączyć do naszej sieci.

W logach zauważymy, że po restarcie serwera, John nie może się połączyć z powodu unieważnionego certyfikatu:

