How To Set Up and Configure a Certificate Authority (CA) On Ubuntu 20.04

Wprowadzenie

A Certificate Authority (CA) jest podmiotem odpowiedzialnym za wydawanie certyfikatów cyfrowych w celu weryfikacji tożsamości w Internecie. Chociaż publiczne CA są popularnym wyborem do weryfikacji tożsamości stron internetowych i innych usług, które są świadczone dla ogółu społeczeństwa, prywatne CA są zwykle używane dla zamkniętych grup i prywatnych usług.

Budowanie prywatnego urzędu certyfikacji pozwoli Ci skonfigurować, przetestować i uruchomić programy, które wymagają szyfrowanych połączeń między klientem a serwerem. Z prywatnym CA, możesz wydawać certyfikaty dla użytkowników, serwerów lub poszczególnych programów i usług w ramach swojej infrastruktury.

Szczególnymi przykładami programów na Linuksie, które używają własnego prywatnego CA są OpenVPN i Puppet . Możesz również skonfigurować swój serwer WWW tak, aby używał certyfikatów wydanych przez prywatny CA w celu dopasowania środowisk rozwojowych i inscenizacyjnych do serwerów produkcyjnych, które używają TLS do szyfrowania połączeń.

W tym przewodniku dowiemy się, jak skonfigurować prywatny urząd certyfikacji na serwerze Ubuntu 20.04 oraz jak wygenerować i podpisać certyfikat testowy przy użyciu nowego CA. Dowiesz się również, jak zaimportować certyfikat publiczny serwera CA do magazynu certyfikatów systemu operacyjnego, dzięki czemu można zweryfikować łańcuch zaufania między CA i zdalnych serwerów lub użytkowników. Wreszcie dowiesz się, jak unieważnić certyfikaty i dystrybucji Certificate Revocation List, aby upewnić się, że tylko autoryzowani użytkownicy i systemy mogą korzystać z usług, które polegają na swoim CA.

Wymagania wstępne

Aby ukończyć ten samouczek, trzeba mieć dostęp do serwera Ubuntu 20.04 do hostowania serwera CA. Będziesz musiał skonfigurować użytkownika non-root z uprawnieniami sudo przed rozpoczęciem tego przewodnika. Możesz podążać za naszym przewodnikiem po wstępnej konfiguracji serwera Ubuntu 20.04, aby skonfigurować użytkownika z odpowiednimi uprawnieniami. Podlinkowany poradnik skonfiguruje również zaporę sieciową, która, jak się zakłada, będzie działać przez cały czas trwania tego poradnika.

Ten serwer będzie określany w tym poradniku jako serwer CA.

Upewnij się, że serwer CA jest systemem autonomicznym. Będzie on służył tylko do importowania, podpisywania i unieważniania wniosków o wydanie certyfikatu. Nie powinien uruchamiać żadnych innych usług, a najlepiej będzie, jeśli będzie offline lub całkowicie wyłączony, gdy nie pracujesz aktywnie z CA.

Uwaga: Ostatnia część tego poradnika jest opcjonalna, jeśli chcesz dowiedzieć się więcej o podpisywaniu i unieważnianiu certyfikatów. Jeśli zdecydujesz się wykonać te kroki praktyczne, będziesz potrzebował drugiego serwera Ubuntu 20.04 lub możesz użyć własnego lokalnego komputera z systemem Linux z Ubuntu lub Debianem, lub dystrybucjami pochodnymi tych systemów.

Krok 1 – Instalacja Easy-RSA

Pierwszym zadaniem w tym samouczku jest zainstalowanie zestawu skryptów easy-rsa na serwerze CA. easy-rsa jest narzędziem do zarządzania urzędem certyfikacji, którego użyjesz do wygenerowania klucza prywatnego i publicznego certyfikatu głównego, których następnie użyjesz do podpisywania żądań od klientów i serwerów, które będą polegać na twoim CA.

Zaloguj się do swojego serwera CA jako użytkownik sudo bez uprawnień administratora, który został utworzony podczas początkowych kroków konfiguracji i wykonaj następujące czynności:

  • sudo apt update
  • sudo apt install easy-rsa

Zostaniesz poproszony o pobranie pakietu i zainstalowanie go. Naciśnij y, aby potwierdzić, że chcesz zainstalować pakiet.

W tym momencie masz wszystko, czego potrzebujesz, skonfigurowane i gotowe do użycia Easy-RSA. W następnym kroku utworzysz infrastrukturę klucza publicznego, a następnie rozpoczniesz budowę swojego urzędu certyfikacji.

Krok 2 – Przygotowanie katalogu infrastruktury klucza publicznego

Teraz, gdy zainstalowałeś easy-rsa, nadszedł czas na utworzenie szkieletowej infrastruktury klucza publicznego (PKI) na serwerze CA. Upewnij się, że nadal jesteś zalogowany jako użytkownik non-root i utwórz katalog easy-rsa. Upewnij się, że nie używasz sudo do uruchamiania poniższych poleceń, ponieważ zwykły użytkownik powinien zarządzać i współdziałać z CA bez podwyższonych uprawnień.

  • mkdir ~/easy-rsa

To utworzy nowy katalog o nazwie easy-rsa w twoim folderze domowym. Będziemy używać tego katalogu do tworzenia dowiązań symbolicznych wskazujących na pliki pakietu easy-rsa, które zainstalowaliśmy w poprzednim kroku. Pliki te znajdują się w folderze /usr/share/easy-rsa na serwerze CA Server.

Utwórz dowiązania symboliczne za pomocą polecenia ln:

  • ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Uwaga: Podczas gdy inne przewodniki mogą instruować, aby skopiować pliki pakietu easy-rsa do katalogu PKI, ten samouczek przyjmuje podejście oparte na dowiązaniach symbolicznych. W rezultacie, wszelkie aktualizacje pakietu easy-rsa będą automatycznie odzwierciedlone w skryptach twojego PKI.

Aby ograniczyć dostęp do nowego katalogu PKI, upewnij się, że tylko właściciel ma do niego dostęp, używając polecenia chmod:

  • chmod 700 /home/sammy/easy-rsa

Na koniec zainicjalizuj PKI wewnątrz katalogu easy-rsa:

  • cd ~/easy-rsa
  • ./easyrsa init-pki
Output
init-pki complete; you may now create a CA or requests.Your newly created PKI dir is: /home/sammy/easy-rsa/pki

Po zakończeniu tej sekcji masz katalog, który zawiera wszystkie pliki potrzebne do utworzenia urzędu certyfikacji. W następnej sekcji utworzysz klucz prywatny i certyfikat publiczny dla swojego urzędu certyfikacji.

Krok 3 – Tworzenie urzędu certyfikacji

Zanim utworzysz klucz prywatny i certyfikat urzędu certyfikacji, musisz utworzyć i wypełnić plik o nazwie vars pewnymi domyślnymi wartościami. Najpierw cd do katalogu easy-rsa, a następnie utwórz i edytuj plik vars za pomocą nano lub preferowanego edytora tekstu:

  • cd ~/easy-rsa
  • nano vars

Po otwarciu pliku wklej poniższe linie i edytuj każdą podświetloną wartość, aby odzwierciedlić informacje o własnej organizacji. Ważną częścią jest upewnienie się, że nie pozostawiasz żadnych wartości pustych:

~/easy-rsa/vars
set_var EASYRSA_REQ_COUNTRY "US"set_var EASYRSA_REQ_PROVINCE "NewYork"set_var EASYRSA_REQ_CITY "New York City"set_var EASYRSA_REQ_ORG "DigitalOcean"set_var EASYRSA_REQ_EMAIL "[email protected]"set_var EASYRSA_REQ_OU "Community"set_var EASYRSA_ALGO "ec"set_var EASYRSA_DIGEST "sha512"

Gdy skończysz, zapisz i zamknij plik. Jeśli używasz nano, możesz to zrobić, naciskając CTRL+X, następnie Y i ENTER, aby potwierdzić. Jesteś teraz gotowy do zbudowania swojego CA.

Aby utworzyć parę kluczy publicznych i prywatnych dla swojego urzędu certyfikacji, uruchom ponownie polecenie ./easy-rsa, tym razem z opcją build-ca:

  • ./easyrsa build-ca

W wyjściu zobaczysz kilka wierszy o wersji OpenSSL i zostaniesz poproszony o podanie hasła dla swojej pary kluczy. Pamiętaj, aby wybrać silne hasło i zanotować je w bezpiecznym miejscu. Będziesz musiał wprowadzić hasło za każdym razem, gdy będziesz musiał wejść w interakcję ze swoim CA, na przykład w celu podpisania lub unieważnienia certyfikatu.

Zostaniesz również poproszony o potwierdzenie Common Name (CN) dla Twojego CA. CN jest nazwą używaną do odnoszenia się do tego urządzenia w kontekście urzędu certyfikacji. Możesz wpisać dowolny ciąg znaków dla Common Name CA, ale dla uproszczenia naciśnij ENTER, aby zaakceptować domyślną nazwę.

Output
. . .Enter New CA Key Passphrase:Re-Enter New CA Key Passphrase:. . .Common Name (eg: your user, host, or server name) :CA creation complete and you may now import and sign cert requests.Your new CA certificate file for publishing is at:/home/sammy/easy-rsa/pki/ca.crt

Uwaga: Jeśli nie chcesz być proszony o podanie hasła przy każdym kontakcie z urzędem certyfikacji, możesz uruchomić polecenie build-ca z opcją nopass, jak poniżej:

  • ./easyrsa build-ca nopass

Masz teraz dwa ważne pliki – ~/easy-rsa/pki/ca.crt i ~/easy-rsa/pki/private/ca.key – które tworzą publiczny i prywatny składnik urzędu certyfikacji.

  • ca.crt to plik certyfikatu publicznego urzędu certyfikacji. Użytkownicy, serwery i klienci używają tego certyfikatu, aby sprawdzić, czy są częścią tej samej sieci zaufania. Każdy użytkownik i serwer, który korzysta z Twojego CA, będzie musiał mieć kopię tego pliku. Wszystkie strony będą polegać na certyfikacie publicznym, aby upewnić się, że ktoś nie podszywa się pod system i nie przeprowadza ataku Man-in-the-middle.

  • ca.key to klucz prywatny, którego CA używa do podpisywania certyfikatów dla serwerów i klientów. Jeśli atakujący uzyska dostęp do Twojego CA i z kolei do Twojego pliku ca.key, będziesz musiał zniszczyć swój CA. To dlatego plik ca.key powinien znajdować się tylko na maszynie CA i najlepiej, aby maszyna CA była w trybie offline, gdy nie podpisuje wniosków o certyfikaty jako dodatkowe zabezpieczenie.

W ten sposób Twój CA jest na swoim miejscu i jest gotowy do podpisywania wniosków o certyfikaty i unieważniania certyfikatów.

Krok 4 – Dystrybucja publicznego certyfikatu urzędu certyfikacji

Teraz twój CA jest skonfigurowany i gotowy do działania jako korzeń zaufania dla każdego systemu, który chcesz skonfigurować do korzystania z niego. Możesz dodać certyfikat CA do swoich serwerów OpenVPN, serwerów WWW, serwerów pocztowych itd. Każdy użytkownik lub serwer, który musi zweryfikować tożsamość innego użytkownika lub serwera w sieci, powinien mieć kopię pliku ca.crt zaimportowaną do magazynu certyfikatów swojego systemu operacyjnego.

Aby zaimportować certyfikat publiczny CA do drugiego systemu Linux, takiego jak inny serwer lub komputer lokalny, najpierw uzyskaj kopię pliku ca.crt z serwera CA. Możesz użyć polecenia cat, aby wyprowadzić go w terminalu, a następnie skopiować i wkleić do pliku na drugim komputerze, który importuje certyfikat. Możesz również użyć narzędzi takich jak scp, rsync, aby przesłać plik między systemami. Jednak w tym kroku użyjemy opcji kopiuj i wklej z nano, ponieważ będzie ona działać na wszystkich systemach.

Jako użytkownik nieroot na serwerze CA, wykonaj następujące polecenie:

  • cat ~/easy-rsa/pki/ca.crt

W terminalu pojawi się wyjście podobne do poniższego:

Output
-----BEGIN CERTIFICATE-----MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQELBQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw. . .. . .-----END CERTIFICATE-----

Kopiuj wszystko, łącznie z liniami -----BEGIN CERTIFICATE----- i -----END CERTIFICATE----- oraz myślnikami.

Na drugim systemie Linux użyj nano lub preferowanego edytora tekstu, aby otworzyć plik o nazwie /tmp/ca.crt:

  • nano /tmp/ca.crt

Wklej do edytora zawartość, którą właśnie skopiowałeś z serwera CA. Gdy skończysz, zapisz i zamknij plik. Jeśli używasz nano, możesz to zrobić, naciskając CTRL+X, następnie Y i ENTER, aby potwierdzić.

Teraz, gdy masz kopię pliku ca.crt w drugim systemie Linux, nadszedł czas na zaimportowanie certyfikatu do jego magazynu certyfikatów systemu operacyjnego.

W systemach opartych na Ubuntu i Debianie wykonaj następujące polecenia jako użytkownik nieroot, aby zaimportować certyfikat:

Dystrybucje pochodne Ubuntu i Debiana
  • sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/
  • sudo update-ca-certificates

Aby zaimportować certyfikat serwera CA w systemie opartym na CentOS, Fedora lub RedHat, skopiuj i wklej zawartość pliku do systemu, tak jak w poprzednim przykładzie w pliku o nazwie /tmp/ca.crt. Następnie skopiujesz certyfikat do pliku /etc/pki/ca-trust/source/anchors/, po czym uruchomisz polecenie update-ca-trust.

Dystrybucje CentOS, Fedora, RedHat
  • sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/
  • sudo update-ca-trust

Teraz twój drugi system Linux będzie ufał każdemu certyfikatowi, który został podpisany przez serwer CA.

Uwaga: Jeśli używasz swojego CA z serwerami WWW i używasz Firefoksa jako przeglądarki, będziesz musiał zaimportować publiczny ca.crt certyfikat bezpośrednio do Firefoksa. Firefox nie korzysta z lokalnego magazynu certyfikatów systemu operacyjnego. Aby uzyskać szczegółowe informacje na temat tego, jak dodać certyfikat CA do Firefoksa, zobacz artykuł pomocy technicznej Mozilli na temat konfigurowania urzędów certyfikacji (CA) w Firefoksie.

Jeśli używasz swojego CA do integracji ze środowiskiem Windows lub komputerami stacjonarnymi, zobacz dokumentację na temat tego, jak użyć certutil.exe do zainstalowania certyfikatu CA.

Jeśli używasz tego samouczka jako warunku wstępnego dla innego samouczka lub jesteś zaznajomiony z tym, jak podpisywać i unieważniać certyfikaty, możesz zatrzymać się tutaj. Jeśli chcesz dowiedzieć się więcej o tym, jak podpisywać i unieważniać certyfikaty, to poniższa opcjonalna sekcja wyjaśni każdy proces szczegółowo.

(Optional) – Tworzenie żądań podpisania certyfikatu i unieważnianie certyfikatów

Następne sekcje tego kursu są opcjonalne. Jeśli wykonałeś wszystkie poprzednie kroki, masz w pełni skonfigurowany i działający urząd certyfikacji, który możesz wykorzystać jako warunek wstępny dla innych samouczków. Możesz zaimportować plik ca.crt twojego CA i zweryfikować certyfikaty w sieci, które zostały podpisane przez twój CA.

Jeśli chciałbyś poćwiczyć i dowiedzieć się więcej o tym, jak podpisywać żądania certyfikatów i jak unieważniać certyfikaty, to te opcjonalne sekcje wyjaśnią, jak działają oba procesy.

(Optional) – Tworzenie i podpisywanie praktycznego żądania certyfikatu

Teraz, gdy masz CA gotowy do użycia, możesz przećwiczyć generowanie klucza prywatnego i żądania certyfikatu, aby zapoznać się z procesem podpisywania i dystrybucji.

Żądanie podpisania certyfikatu (CSR) składa się z trzech części: klucza publicznego, informacji identyfikujących system żądający i podpisu samego żądania, który jest tworzony przy użyciu klucza prywatnego strony żądającej. Klucz prywatny będzie utrzymywany w tajemnicy i zostanie użyty do zaszyfrowania informacji, które każdy posiadacz podpisanego certyfikatu publicznego będzie mógł odszyfrować.

Następujące kroki zostaną wykonane na drugim systemie Ubuntu lub Debian, lub dystrybucji wywodzącej się z któregoś z nich. Może to być inny zdalny serwer lub lokalna maszyna linuksowa, taka jak laptop lub komputer stacjonarny. Ponieważ easy-rsa nie jest domyślnie dostępny we wszystkich systemach, użyjemy narzędzia openssl do utworzenia praktycznego klucza prywatnego i certyfikatu.

openssl jest zwykle domyślnie zainstalowany w większości dystrybucji Linuksa, ale dla pewności wykonaj następujące czynności w swoim systemie:

  • sudo apt update
  • sudo apt install openssl

Gdy pojawi się monit o zainstalowanie openssl, wpisz y, aby kontynuować kroki instalacji. Teraz jesteś gotowy do utworzenia praktycznego CSR za pomocą openssl.

Pierwszym krokiem, który musisz wykonać, aby utworzyć CSR, jest wygenerowanie klucza prywatnego. Aby utworzyć klucz prywatny przy użyciu openssl, należy utworzyć katalog practice-csr, a następnie wygenerować klucz wewnątrz niego. Złożymy to żądanie dla fikcyjnego serwera o nazwie sammy-server, w przeciwieństwie do tworzenia certyfikatu, który jest używany do identyfikacji użytkownika lub innego CA.

  • mkdir ~/practice-csr
  • cd ~/practice-csr
  • openssl genrsa -out sammy-server.key
Output
Generating RSA private key, 2048 bit long modulus (2 primes). . .. . .e is 65537 (0x010001)

Teraz, gdy masz już klucz prywatny, możesz utworzyć odpowiedni CSR, ponownie używając narzędzia openssl. Zostaniesz poproszony o wypełnienie kilku pól, takich jak kraj, stan i miasto. Możesz wpisać ., jeśli chcesz pozostawić pole puste, ale pamiętaj, że gdyby to był prawdziwy CSR, najlepiej użyć prawidłowych wartości dla Twojej lokalizacji i organizacji:

  • openssl req -new -key sammy-server.key -out sammy-server.req
Output
. . .-----Country Name (2 letter code) :USState or Province Name (full name) :New YorkLocality Name (eg, city) :New York CityOrganization Name (eg, company) :DigitalOceanOrganizational Unit Name (eg, section) :CommunityCommon Name (eg, your name or your server's hostname) :sammy-serverEmail Address :Please enter the following 'extra' attributesto be sent with your certificate requestA challenge password :An optional company name :

Jeśli chcesz automatycznie dodać te wartości jako część wywołania openssl zamiast przez interaktywny znak zachęty, możesz przekazać argument -subj do OpenSSL. Aby zweryfikować zawartość CSR, możesz wczytać plik żądania za pomocą openssl i zbadać znajdujące się w nim pola:

  • openssl req -in sammy-server.req -noout -subject
Output
subject=C = US, ST = New York, L = New York City, O = DigitalOcean, OU = Community, CN = sammy-server

Gdy już jesteś zadowolony z tematu żądania certyfikatu praktyki, skopiuj plik sammy-server.req na swój serwer CA za pomocą scp:

  • scp sammy-server.req sammy@your_ca_server_ip:/tmp/sammy-server.req

W tym kroku wygenerowałeś Certificate Signing Request dla fikcyjnego serwera o nazwie sammy-server. W prawdziwym scenariuszu, żądanie może pochodzić z czegoś takiego jak serwer WWW, który potrzebuje certyfikatu TLS do testowania; lub może pochodzić z serwera OpenVPN, który prosi o certyfikat, aby użytkownicy mogli połączyć się z siecią VPN. W następnym kroku przejdziemy do podpisania żądania podpisania certyfikatu przy użyciu klucza prywatnego serwera CA.

(Optional) – Signing a CSR

W poprzednim kroku utworzyłeś praktyczne żądanie certyfikatu i klucz dla fikcyjnego serwera. Skopiowałeś je do katalogu /tmp na swoim serwerze CA, naśladując proces, którego używałbyś, gdybyś miał prawdziwych klientów lub serwery wysyłające Ci żądania CSR, które wymagają podpisania.

Kontynuując fikcyjny scenariusz, teraz serwer CA musi zaimportować certyfikat praktyczny i podpisać go. Gdy żądanie certyfikatu zostanie zatwierdzone przez CA i przekazane z powrotem do serwera, klienci, którzy ufają urzędowi certyfikacji, będą mogli również zaufać nowo wydanemu certyfikatowi.

Ponieważ będziemy działać wewnątrz PKI urzędu certyfikacji, gdzie narzędzie easy-rsa jest dostępne, kroki podpisywania będą korzystać z narzędzia easy-rsa, aby ułatwić sprawę, w przeciwieństwie do bezpośredniego korzystania z openssl, tak jak zrobiliśmy to w poprzednim przykładzie.

Pierwszym krokiem do podpisania fikcyjnego CSR jest zaimportowanie żądania certyfikatu za pomocą skryptu easy-rsa:

  • cd ~/easy-rsa
  • ./easyrsa import-req /tmp/sammy-server.req sammy-server
Output
. . .The request has been successfully imported with a short name of: sammy-serverYou may now use this name to perform signing operations on this request.

Teraz można podpisać żądanie, uruchamiając skrypt easyrsa z opcją sign-req, a następnie typ żądania i nazwę wspólną, która jest zawarta w CSR. Typ żądania może być jednym z client, server lub ca. Ponieważ ćwiczymy z certyfikatem dla fikcyjnego serwera, pamiętaj, aby użyć typu żądania server:

  • ./easyrsa sign-req server sammy-server

W oknie wyjściowym zostaniesz poproszony o sprawdzenie, czy żądanie pochodzi z zaufanego źródła. Wpisz yes, a następnie naciśnij ENTER, aby to potwierdzić:

Output
You are about to sign the following certificate.Please check over the details shown below for accuracy. Note that this requesthas not been cryptographically verified. Please be sure it came from a trustedsource or that you have verified the request checksum with the sender.Request subject, to be signed as a server certificate for 3650 days:subject= commonName = sammy-serverType the word 'yes' to continue, or any other input to abort. Confirm request details: yes. . .Certificate created at: /home/sammy/easy-rsa/pki/issued/sammy-server.crt

Jeśli zaszyfrowałeś swój klucz CA, w tym momencie zostaniesz poproszony o podanie hasła.

Po wykonaniu tych czynności podpisałeś sammy-server.req CSR przy użyciu klucza prywatnego serwera CA w /home/sammy/easy-rsa/pki/private/ca.key. Wynikowy plik sammy-server.crt zawiera publiczny klucz szyfrowania serwera praktyki, a także nowy podpis z serwera CA. Celem podpisu jest poinformowanie każdego, kto ufa CA, że może również zaufać certyfikatowi sammy-server.

Jeśli ten wniosek był dla prawdziwego serwera, takiego jak serwer WWW lub serwer VPN, ostatnim krokiem na serwerze CA będzie dystrybucja nowych plików sammy-server.crt i ca.crt z serwera CA do zdalnego serwera, który złożył wniosek CSR:

  • scp pki/issued/sammy-server.crt sammy@your_server_ip:/tmp
  • scp pki/ca.crt sammy@your_server_ip:/tmp

W tym momencie, byłbyś w stanie użyć wydanego certyfikatu z czymś takim jak serwer WWW, VPN, narzędzie do zarządzania konfiguracją, system baz danych lub do celów uwierzytelniania klienta.

(Optional) – Revoking a Certificate

Okresowo, możesz potrzebować unieważnić certyfikat, aby zapobiec użyciu go przez użytkownika lub serwer. Być może czyjś laptop został skradziony, serwer WWW został skompromitowany lub pracownik lub kontrahent opuścił organizację.

Aby unieważnić certyfikat, należy wykonać następujące kroki:

  1. Unieważnij certyfikat za pomocą polecenia ./easyrsa revoke client_name.
  2. Generowanie nowej listy CRL za pomocą polecenia ./easyrsa gen-crl.
  3. Przekaż zaktualizowany plik crl.pem na serwer lub serwery, które polegają na Twoim CA, a na tych systemach skopiuj go do wymaganego katalogu lub katalogów dla programów, które się do niego odwołują.
  4. Restartuj wszystkie usługi, które korzystają z Twojego CA i pliku CRL.

Możesz użyć tego procesu do unieważnienia certyfikatów, które wcześniej wydałeś w dowolnym momencie. Każdy krok omówimy szczegółowo w kolejnych sekcjach, zaczynając od polecenia revoke.

Unieważnianie certyfikatu

Aby unieważnić certyfikat, przejdź do katalogu easy-rsa na swoim serwerze CA:

  • cd ~/easy-rsa

Następnie uruchom skrypt easyrsa z opcją revoke, a następnie podaj nazwę klienta, którego chcesz unieważnić. Zgodnie z powyższym przykładem praktycznym Common Name certyfikatu to sammy-server:

  • ./easyrsa revoke sammy-server

Wtedy zostaniesz poproszony o potwierdzenie unieważnienia poprzez wpisanie yes:

Output
Please confirm you wish to revoke the certificate with the following subject:subject= commonName = sammy-serverType the word 'yes' to continue, or any other input to abort. Continue with revocation: yes. . .Revoking Certificate 8348B3F146A765581946040D5C4D590A. . .

Zauważ podświetloną wartość w wierszu Revoking Certificate. Jest to unikalny numer seryjny certyfikatu, który jest unieważniany. Jeśli chcesz sprawdzić listę unieważnień w ostatnim kroku tej sekcji, aby zweryfikować, czy certyfikat się na niej znajduje, będziesz potrzebował tej wartości.

Po potwierdzeniu akcji urząd certyfikacji unieważni certyfikat. Jednak systemy zdalne, które polegają na CA, nie mają możliwości sprawdzenia, czy jakiekolwiek certyfikaty zostały unieważnione. Użytkownicy i serwery nadal będą mogli używać certyfikatu, dopóki lista CRL (Certificate Revocation List) urzędu certyfikacji nie zostanie rozesłana do wszystkich systemów, które polegają na urzędzie certyfikacji.

W następnym kroku wygenerujesz listę CRL lub zaktualizujesz istniejący plik crl.pem.

Generating a Certificate Revocation List

Teraz, gdy unieważniłeś certyfikat, ważne jest, aby zaktualizować listę unieważnionych certyfikatów na serwerze urzędu certyfikacji. Gdy będziesz miał zaktualizowaną listę unieważnień, będziesz mógł stwierdzić, którzy użytkownicy i systemy mają ważne certyfikaty w Twoim CA.

Aby wygenerować listę CRL, uruchom polecenie easy-rsa z opcją gen-crl, pozostając w katalogu ~/easy-rsa:

  • ./easyrsa gen-crl

Jeśli użyłeś hasła podczas tworzenia pliku ca.key, zostaniesz poproszony o jego wprowadzenie. Polecenie gen-crl wygeneruje plik o nazwie crl.pem, zawierający uaktualnioną listę unieważnionych certyfikatów dla tego CA.

Następnie będziesz musiał przesłać uaktualniony plik crl.pem do wszystkich serwerów i klientów, które polegają na tym CA, za każdym razem, gdy uruchomisz polecenie gen-crl. W przeciwnym razie klienci i systemy nadal będą mogły uzyskać dostęp do usług i systemów, które używają twojego CA, ponieważ te usługi muszą wiedzieć o statusie unieważnionego certyfikatu.

Transferowanie listy unieważnień certyfikatów

Teraz, gdy wygenerowałeś listę CRL na swoim serwerze CA, musisz przekazać ją do zdalnych systemów, które polegają na twoim CA. Aby przesłać ten plik na swoje serwery, możesz użyć polecenia scp.

Uwaga: Ten poradnik wyjaśnia, jak generować i dystrybuować listę CRL ręcznie. Chociaż istnieją bardziej solidne i zautomatyzowane metody dystrybucji i sprawdzania list odwołań, takie jak OCSP-Stapling, konfigurowanie tych metod wykracza poza zakres tego artykułu.

Upewnij się, że jesteś zalogowany na swoim serwerze CA jako użytkownik nieroot i uruchom następujące polecenie, zastępując IP własnego serwera lub nazwę DNS w miejsce your_server_ip:

  • scp ~/easy-rsa/pki/crl.pem sammy@your_server_ip:/tmp

Teraz, gdy plik znajduje się w zdalnym systemie, ostatnim krokiem jest zaktualizowanie wszystkich usług za pomocą nowej kopii listy odwołań.

Uaktualnianie usług obsługujących listę CRL

Listowanie kroków, których należy użyć do aktualizacji usług korzystających z pliku crl.pem wykracza poza zakres tego poradnika. Ogólnie rzecz biorąc, będziesz musiał skopiować plik crl.pem do lokalizacji, której oczekuje usługa, a następnie uruchomić ją ponownie za pomocą systemctl.

Po zaktualizowaniu usług za pomocą nowego pliku crl.pem, twoje usługi będą mogły odrzucać połączenia od klientów lub serwerów, które używają unieważnionego certyfikatu.

Examining and Verifying the Contents of a CRL

Jeśli chcesz zbadać plik CRL, na przykład w celu potwierdzenia listy unieważnionych certyfikatów, użyj następującego polecenia openssl z katalogu easy-rsa na serwerze CA:

  • cd ~/easy-rsa
  • openssl crl -in pki/crl.pem -noout -text

Możesz również uruchomić to polecenie na dowolnym serwerze lub systemie, który ma zainstalowane narzędzie openssl z kopią pliku crl.pem. Na przykład, jeśli przeniosłeś plik crl.pem do drugiego systemu i chcesz sprawdzić, czy certyfikat sammy-server jest unieważniony, możesz użyć polecenia openssl takiego jak poniższe, zastępując numer seryjny, który zauważyłeś wcześniej, gdy unieważniałeś certyfikat, w miejsce zaznaczonego tutaj:

  • openssl crl -in /tmp/crl.pem -noout -text |grep -A 1 8348B3F146A765581946040D5C4D590A
Output
Serial Number: 8348B3F146A765581946040D5C4D590A Revocation Date: Apr 1 20:48:02 2020 GMT

Zauważ, jak polecenie grep jest używane do sprawdzenia unikalnego numeru seryjnego, który zauważyłeś w kroku unieważniania. Teraz możesz zweryfikować zawartość swojej listy unieważnień certyfikatów w każdym systemie, który opiera się na niej w celu ograniczenia dostępu do użytkowników i usług.

Podsumowanie

W tym poradniku utworzyłeś prywatny urząd certyfikacji przy użyciu pakietu Easy-RSA na samodzielnym serwerze Ubuntu 20.04. Dowiedziałeś się, jak działa model zaufania pomiędzy stronami, które polegają na CA. Stworzyłeś i podpisałeś żądanie podpisania certyfikatu (CSR) dla serwera w praktyce, a następnie dowiedziałeś się, jak unieważnić certyfikat. Na koniec dowiedziałeś się, jak generować i dystrybuować listę CRL (Certificate Revocation List) dla każdego systemu, który opiera się na twoim CA, aby zapewnić, że użytkownicy lub serwery, które nie powinny mieć dostępu do usług, nie będą miały takiej możliwości.

Teraz możesz wystawiać certyfikaty dla użytkowników i używać ich z usługami takimi jak OpenVPN. Można również użyć CA do skonfigurowania serwerów deweloperskich i stagingowych z certyfikatami, aby zabezpieczyć środowiska nieprodukcyjne. Użycie CA z certyfikatami TLS podczas rozwoju może pomóc w zapewnieniu, że kod i środowisko są jak najbardziej zgodne ze środowiskiem produkcyjnym.

Jeśli chcesz dowiedzieć się więcej o tym, jak korzystać z OpenSSL, nasz OpenSSL Essentials: Working with SSL Certificates, Private Keys and CSRs tutorial zawiera wiele dodatkowych informacji, które pomogą Ci zapoznać się z podstawami OpenSSL.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.