Automatyczne generowanie certyfikatów dla komputerów i użytkowników z AD CS

Przeczytasz to w: 8 minut

Ten myk jest dosyć przydatny pewnie w wielu kwestiach, ale na ten moment jestem chyba zbyt głupiutki, by znać największe zalety. Tak czy siak znam kilka – na pewno takie certyfikaty klienta/komputera można wykorzystać w autoryzacji VPN w klientach FortiClient dla FortiGate. Poza tym można to też wykorzystać przy logowaniu do interfejsu administracyjnego Stormshielda.

Istotna sprawa na początku – certyfikaty klienta w tym poradniku będą tak skonfigurowane, że będą wymagały tego, by każdy użytkownik miał wpisany adres e-mail w koncie użytkownika.

Jeśli tego nie zrobimy to skończymy z takimi błędami w urzędzie certyfikacji. Po prostu nasze certyfikaty nie zostaną wystawione.

Aby certyfikaty były wystawiane dla komputerów jak i dla użytkowników, musimy im pozwolić na żądanie takich certyfikatów. Zaczynamy w urzędzie certyfikacji, w sekcji Szablony certyfikatów klikamy PPM i wybieramy Zarządzaj.

Zaczniemy od szablonu dla komputerów. Z listy szablonów wybieramy Uwierzytelnienie stacji roboczej i klikamy na ten szablon PPM, wybieramy Duplikuj szablon.

Następnie w ustawieniach nowego szablonu musimy zmienić jego nazwę wyświetlaną i nazwę szablonu (nazwę pospolitą). Ta druga nie może mieć spacji, a ta pierwsza nie może być taka jak zawsze, bo nie będziemy w stanie rozróżnić naszego szablonu od tego wbudowanego. Ponadto ja zmieniłem okres ważności certyfikatu na 3 lata, ale to nie jest potrzebne. W produkcji nie stosowałbym tej zmiany. To wszystko robimy w zakladce Ogólne.

Następnie w zakładce Nazwa podmiotu upewniamy się, że Nazwa DNS i Główna nazwa użytkownika jest zaznaczona.

Następnie w zakładce Zabezpieczenia należy upewnić się, że grupa Komputery domeny ma uprawnienia do odczytu, rejestracji i autorejestrowania.

Po tym można zapisać. Następnie duplikujemy szablon Użytkownik:

Podobnie jak w przypadku pierwszego szablonu edytujemy obie nazwy. Tutaj domyślnie też okres ważności certyfikatu to rok i zmieniłem na 3. W normalnym środowisku bym tego nie zmieniał. Ponadto tutaj jest zaznaczona opcja Publikuj certyfikat w usłudze Active Directory i tak powinno być.

W zakładce Obsługiwanie żądań musimy się upewnić, że opcja Zezwalaj na eksportowanie klucza prywatnego jest odznaczona. Poza tym te opcje, które są tutaj widoczne są domyślnie wybrane i nie musimy niczego zmieniać.

Następnie musimy przejść do zakładki Rozszerzenia, wybrać z listy rozszerzeń Zasady aplikacji i kliknąć Edytuj….

Następnie klikamy Dodaj….

Z listy wybieramy Uwierzytelnienie serwera i dajemy OK.

Tak to powinno wyglądać na koniec.

Potem, w zakładce Zabezpieczenia grupa Użytkownicy domeny powinna mieć uprawnienia do odczytu, rejestracji i autorejestrowania.

Na koniec w karcie Nazwa podmiotu w alternatywnej nazwie podmiotu powinna być zaznaczona Nazwa e-mail i Główna nazwa użytkownika (UPN). Gdy to mamy gotowe, możemy zapisać.

Po tym musimy wystawić szablony tak, aby dało się z nich korzystać. Klikamy w urzędzie certyfikacji, w sekcji Szablony certyfikatów klikamy PPM i Nowy > Szablon certyfikatu do wystawienia.

Z listy wybieramy nasze nowe szablony certyfikatów i dajemy OK.

Okej, mamy szablony gotowe, więc teraz musimy umożliwić użytkownikom i komputerom na pobieranie certyfikatów. Co prawda tutaj stworzyłem obiekt w głównym drzewku AD, ale myślę, że niekoniecznie to jest najlepszy pomysł, bo po testach mój kontroler domeny wygenerował sobie certyfikaty i zaczął używać niewłaściwych certyfikatów w niewłaściwych miejscach (poniżej opisuję jak to rozwiązać). Zaczynamy w przystawce Zarządzanie zasadami grupy, w OU z komputerami i użytkownikami lub OU nadrzędnym tworzymy obiekt zasad grupy i jakoś go nazywamy.

Następnie wybieramy obiekt PPM i klikamy Edytuj. Po tym, aby włączyć automatyczne odnawianie certyfikatów dla komputerów należy przejść do Konfiguracja komputera > Zasady > Ustawienia systemu Windows > Ustawienia zabezpieczeń > Zasady kluczy publicznych > Klient usług certyfikatów – automatyczna rejestracja, kliknąć ostatni element PPM i wybrać Właściwości.

We właściwościach wybieramy Model konfiguracji – Włączone, a następnie zaznaczamy oba checkboxy i dajemy okej.

To samo robimy w przypadku użytkowników, lecz ustawienie znajduje się w Konfiguracja użytkownika > Zasady > Ustawienia systemu Windows > Ustawienia zabezpieczeń > Zasady kluczy publicznych > Klient usługi certyfikatów – automatyczna rejestracja.

Tak samo wybieramy Model konfiguracji – Włączone i zaznaczamy oba checkboxy.

Po tym zapisujemy ustawienie, zamykamy GPO i czekamy na aktualizację polityk grupy lub wymuszamy je choćby poleceniem gpupdate /force. Efekt jest taki, że w magazynie certyfikatów komputera pojawi nam się taki certyfikat:

Dodatkowo magazynie certyfikatów użytkownika także się pojawi certyfikat użytkownika:

Potem to można wykorzystać np. przy logowaniu ze Stormshieldem (można wykorzystać certyfikat zamiast podawania loginu i hasła do interfejsu administracyjnego).

By włączyć możliwość logowania po kontach z AD z certyfikatami musimy zintegrować Stormshielda z AD, a następnie dodać metodę autoryzacji Certyfikat (SSL) i wskazać urząd certyfikacji, z którego akceptujemy certyfikaty:

W przypadku FortiGate jeśli ustawieniach SSL-VPN włączymy opcję Require Client Certificate, będziemy musieli się przedstawić certyfikatem klienta przy połączeniu. Oczywiście FortiGate musi mieć certyfikat CA zaimportowany do swojego własnego magazynu certyfikatów, by to działało.

Potem, z poziomu klienta w opcjach profilu VPN wybór certyfikatu wygląda tak:

W trybie webowym tego VPNa wygląda to tak:

Troubleshooting po wprowadzeniu zmian

Jak wspominałem wcześniej, wrzucanie polityki GPO z auto-enrollment było dla mnie zgubne, bo kontroler domeny przestał się przedstawiać odpowiednim certyfikatem w przypadku ruchu szyfrowanego (LDAPS) i wykorzystywał zły certyfikat dla strony do wystawiania certyfikatów w IIS, więc zacząłem od tego, by w IIS zmienić certyfikat z powrotem na poprawny (to jest najprostsze).

Na początku należy przejść do przystawki Certyfikaty.

Następnie, należy wybrać konto usługi.

Teraz komputer lokalny.

Z listy wybieramy Usługi domenowe w usłudze Active Directory.

Po otwarciu katalogu NTDS/Osobisty okazało się, że jest on pusty. W takiej sytuacji AD dobiera sobie certyfikat z lokalnego magazynu certyfikatów i dobiera najnowszy z pasującymi atrybutami. Problem w tym, że te dobieranie atrybutów nie działa zbyt dobrze, więc jeśli chcemy, by LDAPS działał dobrze, musimy umieścić we wspomnianym magazynie certyfikat. Na początku należy zmienić szablon Uwierzytelnianie Kerberos tak, by pozwalał na eksportowanie certyfikatu z kluczem prywatnym, w taki sam sposób, jak tutaj poniżej. Potem należy taki szablon na nowo wystawić, odnowić certyfikat dla LDAPS, eksportować go do pliku i importować do magazynu NTDS/Osobisty.

Tutaj już odnawiam certyfikat.

Dalej.

Zarejestruj.

I gotowe.

Jak wspomniałem, eksportujemy.

Dalej.

Tak, eksportuj klucz prywatny. W następnej części musimy mieć zaznaczone opcje tak jak na zrzucie ekranu, czyli Jeśli jest to możliwe, dołącz wszystkie certyfikaty do ścieżki certyfikacji, Eksportuj wszystkie właściwości rozszerzone i Włącz funkcje prywatności certyfikatu.

Potem podajemy jakieś hasło i wybieramy szyfrowanie AES256-SHA256.

Na końcu wskazujemy ścieżkę do zapisu pliku i zapisujemy.

Tak to wygląda.

Potem we wspomnianym wcześniej magazynie importujemy wyeksportowany certyfikat.

Dalej.

Wskazujemy plik.

Potem podajemy hasło i istotne jest to, by opcja Dołącz wszystkie właściwości rozszerzone.

To się samo wpisze, idziemy dalej.

I koniec.

Po tym należy zrestartować system, a usługa kontrolera domeny zmieni certyfikat i będziemy w domu.