AD CS i Code Signing

Imagem de capa

Cel:

Zdobycie certyfikatu do podpisywania kodu. Podpisany kod będzie działał tylko w domenie firmowej.

Jak można podejść do tematu?

  1. Kupić sobie swój własny certyfikat programistyczny i nim podpisać stworzoną aplikację - głównym urzędem certyfikacji będzie verisign czy digicert - generalnie wymaganie zostanie spełnione. Cert jest poprawny i wszystko hula. Płaci się tylko wcale nie małe pieniądze - w tej chwili na rok można taki certyfikat wygenerować za 178$ (bez “Instant Reputation with Microsoft Smartscreen Filter”), a z 331$. Niby biedni nie jesteśmy, ale to i tak znaczna kwota.
  2. Wygenerować certyfikat poprzez AD CS - (Active Directory Certificate Services).

Pochylę się dzisiaj i podzielę tą jakże tajemną wiedzą jak zdobyć certyfikat w domenie.

Zanim zaczniesz - oczywiście musisz mieć przygotowaną infrastrukturę - masz firmę - masz bizspark’a - pikuś, nie? coś wymyślisz :smile: Potrzebujemy domeny oraz zainstalowanego i skonfigurowanego AD CS. Instalacja i konfiguracja jest klikalna - z tym nie ma żadnych powazniejszych problemów.

[1] Generowanie kodu CSR. Czym jest kod CSR? Z ang. “żądanie podpisania certyfikatu” (Certificate Signing Request).

Jak się to robi?

Na swojej zwykłej stacji roboczej uruchom nowe zadanie (win+R), wpisz w okienko mmc. Dodaj/usuń przystawkę, wybierz certyfikaty->”Moje konto użyszkodnika” i ok.

Rozwijamy drzewo certyfikatów i przechodzimy do Osobisty/Certyfikaty.

Klikamy prawym myszy na certyfikaty, wybieramy “wszystkie zadania”->”Operacje zaawansowane”->”Utwórz żądanie niestandardowe..”.

Pojawia się piękne okienko z opisem rejestracji certyfikatów, przeklikujemy.

Wybieramy zasady rejestracji certyfikatu na te z usługi Active Directory i przechodzimy dalej.

Następnie wybieramy szablon żądania certyfikacyjnego. W moim przypadku chce certyfikat do podpisywania kodu - to wybieram nomen omen: “Podpisywanie kodu”. Uwaga!

W tym miejscu dostępne są tylko standardowe szablony - i tak wybieramy - bo przykład dotyczy mojej domeny, ale zdarzyło mi się już wygenerować CSR z takiego szablonu - i został on odrzucony przez admin’a, bo on zdefiniował swoje własne szablony… w tym przypadku należy powiedzieć adminowi żeby sam sobie wygenerował CSR. Po wybraniu szablonu możemy teraz zająć się właściwościami naszego CSR. Klikamy właściwości - zasad rejestracji usługi Active Directory.

Wypełniamy przyjazną nazwę + opis.

Wybieramy dane do certyfikatu. Ja wypełniłem prawie wszystko.

Zaznaczamy, że chcemy eksportować klucz prywatny.

I zapisujemy do pliku.

W widoku “przystawki” w żądaniach rejestracji certyfikatu powinniśmy zobaczyć nasz “pusty” certyfikat.

[2] Podpisanie CSR w CA (Certification Authority)

Uruchamiamy na serwerze CA. Prawym-> “All Tasks”->”Submit new request”. Wybieramy CSR, który stworzyliśmy w kroku 1.

Po zaimportowaniu CSR’a, pojawi się on nam w folderze “Pending Request”.

To co teraz musimy zrobić to right click na certyfikacie i wybieramy issue.

Nasz certyfikat pojawi się teraz w folderze Issued Certificates.

Zostało teraz tylko wyeksportować klucz publiczny. Można to zrobić np. przez dwuklik certyfikatu oraz kliknięciu “copy to file”.

Wyeksportowany klucz przenosimy na maszynę na której wygenerowaliśmy CSR’a i instalujemy w lokalizacji w której podpowiada instalator.

Odświeżamy widok w mmc z certyfikatami. Mamy nowy podpisany certyfikat z eksportowalnym kluczem prywatnym. Teraz można go użyć np. do podpisania addin’a czy stworzenia certyfikatu w formacie snk do podpisywania bibliotek.