Czy usługi certyfikatów MS mogą być podporządkowane urzędowi certyfikacji utworzonemu za pomocą OpenSSL

16

Chcę skonfigurować korporacyjny urząd certyfikacji dla mojej domeny. Mogę więc wystawiać certyfikaty do różnych celów. Chciałbym postępować zgodnie z najlepszą praktyką posiadania offline urzędu certyfikacji jako głównego i skonfigurować mój korporacyjny urząd certyfikacji jako podwładnego. Ale głupio wydaje się licencjonowanie pełnej kopii systemu Windows do tego zadania.

Mam nadzieję, że uda mi się zainstalować dystrybucję na żywo na dysku flash USB, a następnie zainstalować openssl i skonfigurować mój urząd certyfikacji na dysku flash. Kiedy będę gotowy do zbudowania klucza / certyfikatu root, odłączę komputer od sieci, a następnie nigdy nie użyję tego dysku USB na komputerze podłączonym do sieci.

Czy będę w stanie poprawnie podpisać i utworzyć certyfikat podrzędnego urzędu certyfikacji dla urzędu certyfikacji przedsiębiorstwa Windows, który będzie użyteczny. Jakich opcji muszę używać z OpenSSL, aby zbudować urząd certyfikacji i poprawnie podpisać certyfikat podrzędnego urzędu certyfikacji.

Próbowałem przeszukać sieć i to była jedyna rzecz, jaką mogłem znaleźć na ten temat. Ale poprzedza rok 2008 i nie jestem do końca pewien, czy ta osoba odnosiła sukcesy.

Zoredache
źródło
Żeby było jasne, narzędziem niekoniecznie musi być OpenSSL, ale nie chcę uruchamiać tak dużego urzędu certyfikacji jak EJBCA. Szukam bardzo lekkiego urzędu certyfikacji, który można uruchomić w środowisku livecd / liveusb.
Zoredache

Odpowiedzi:

14

Tak, działa dobrze; urząd certyfikacji systemu Windows nie ma żadnych wątpliwości co do działania jako jednostka podrzędna w stosunku do katalogu głównego innego niż Windows.

Przetestowano przy użyciu katalogu głównego OpenSSL i podwładnego systemu Windows 2008 R2 w trybie Enterprise.


Kilka rzeczy do zabawy z tym, czego oczekuje MS CA w konfiguracji OpenSSL:

  • Prawidłowe lokalizacje AIA i CDP powinny mieć zastosowanie do certyfikatu głównego w sekcji skonfigurowanej przez x509_extensionswłaściwość [req]sekcji dla roota z podpisem własnym. Coś w tym stylu:

    authorityInfoAccess = caIssuers;URI:http://test-rootca.test.local/root.pem
    crlDistributionPoints = URI:http://test-rootca.test.local/root.crl
    
  • Dana konfiguracja OpenSSL prawdopodobnie domyślnie nie pozwala na podrzędne urzędy certyfikacji. Zmień to w przypadku podpisanych żądań (oczywiście upewnij się, że nie ma tego w przypadku żądań, które nie powinny być urzędami certyfikacji). Będzie to w sekcji skonfigurowanej przez x509_extensionswłaściwość [ca]sekcji:

    basicConstraints=CA:TRUE
    certificatePolicies=2.5.29.32.0
    

Zrobimy więc urząd certyfikacji w celu przetestowania.

Zrób swój root:

openssl req -new -x509 -keyout /etc/ssl/private/root.key -out /etc/ssl/certs/root.pem -nodes -extensions v3_ca

Postępuj zgodnie ze swoją konfiguracją i utwórz niezbędne pliki i katalogi w [ca]sekcji swojej konfiguracji OpenSSL.

Wszystko gotowe, aby wszystko działało po stronie Microsoftu; utwórz podrzędny urząd certyfikacji systemu Windows z ręcznym podpisywaniem.

Prześlij żądanie certyfikatu na serwer OpenSSL. W tym momencie pobierz certyfikat główny. Zaimportuj go do zaufanego katalogu głównego - komputera, a nie użytkownika!

Wystaw certyfikat podrzędny:

openssl ca -in test-subca.req
(you might need to specify a permissive policy manually with -policy, check your config)

Jeśli to nie zadziałało, prawdopodobnie urząd certyfikacji ma problem z katalogiem config - new certs, plikiem indeksu, plikiem szeregowym itp. Sprawdź komunikat o błędzie.

Jeśli poszło, to o to chodzi. Jeśli nie, zrób listę CRL i umieść ją w CDP, który skonfigurowałeś powyżej; Właśnie zainstalowałem Apache i zablokowałem go w katalogu głównym:

openssl ca -gencrl -out /var/www/root.crl

I umieść swój certyfikat w lokalizacji AIA, jeśli jeszcze nie jest:

cp /etc/ssl/certs/root.pem /var/www/root.pem

Pobierz nowo wydany certyfikat podrzędny i zainstaluj go w urzędzie certyfikacji za pomocą przystawki MMC urzędu certyfikacji. Zajmie się wszelkimi kwestiami związanymi z zaufaniem lub potwierdzeniem, ale nie ma moralnego sprzeciwu wobec tego.

Wynik końcowy; działający urząd certyfikacji systemu Windows bez żadnych skarg ze strony przystawki Enterprise PKI, z charakterystycznym OpenSSL Generated Certificateatrybutem.

ca.

Shane Madden
źródło
6

Rozumiem, do czego zmierzasz, ale nie sądzę, że OpenSSL jest całkiem odpowiednim narzędziem do tego zadania. Możesz przyjrzeć się projektom Open Source Certificate Authority, takim jak EJBCA, które są bardziej skoncentrowane na tej funkcjonalności niż OpenSSL i mają określoną dokumentację, z której możesz skorzystać.

Nie widzę powodu, dla którego koncepcja nie zadziałałaby, ponieważ wszystko, co robisz, to podpisywanie certyfikatu podległego urzędu certyfikacji. Jeśli płacisz za to publicznemu urzędowi certyfikacji, niekoniecznie będziesz wiedzieć, czy dbasz o smak używanego serwera.

Wszystko, o co musisz dbać, to:

  • możesz podpisać certyfikat z CSR wygenerowanego przez twojego podwładnego
  • wynik można zainstalować na samym podwładnym
  • masz certyfikat podpisywania roota, który można zainstalować jako zaufany na wszystkich klientach, na które jesteś kierowany
  • możesz wygenerować listę odwołania, która gdzieś zostanie podana

Nie mogę powiedzieć, że to zrobiłem, ale jestem pewien, że jeśli postępujesz zgodnie z dokumentami dotyczącymi generowania CSR z okna systemu Windows, a następnie postępujesz zgodnie z dokumentami urzędu certyfikacji w celu generowania certyfikatu .p7k z CSR, to powinno być w porządku.

Nawiasem mówiąc - zalecam utworzenie urzędu certyfikacji jako maszyny wirtualnej dla popularnego hiperwizora, takiego jak Hyper-V lub VMware, zamiast dysku rozruchowego, upewnij się, że przechowujesz go bardzo bezpiecznie w miejscu, w którym może go znaleźć następca, i zakręć nim okresowo offline, aby upewnić się, że działa, lub przenieś go na nowe media / technologię. Główny urząd certyfikacji może mieć życie 10 lub 20 lat ...

dunxd
źródło
+1 OpenSSL nie jest najważniejszym narzędziem do tworzenia urzędu certyfikacji, ale ogólnie działa. Nie wystawiłem certyfikatu podrzędnego urzędu certyfikacji dla urzędu certyfikacji Windows Enterprise, ale nie mogę sobie wyobrazić, dlaczego to nie zadziała (chociaż w przeszłości MS popełniło bardziej rażące działania antykonkurencyjne). Duże +1 dla CA jako VM. Przechowywanie drugiej kopii certyfikatu root jest dobrym pomysłem (Base64 na papierze jest bardzo trwały i łatwy do przechowywania w sejfie / skrytce depozytowej / itp.)
Chris S
Byłem bardzo zadowolony z siebie, kiedy zdałem sobie sprawę, że mogę skonfigurować maszynę wirtualną bez żadnych kart sieciowych i po prostu użyć wirtualnej stacji dyskietek, aby włączyć CSR i podpisać certyfikaty. Sneakernet odrodzony z wirtualnym blaskiem 21 wieku!
dunxd