Jak nastavit a nakonfigurovat certifikační autoritu v Ubuntu 20.04
Úvod
Certifikační autorita (CA) je subjekt odpovědný za vydávání digitálních certifikátů pro ověřování identity na internetu. Ačkoli veřejné certifikační autority jsou oblíbenou volbou pro ověřování identity webových stránek a dalších služeb, které jsou poskytovány široké veřejnosti, soukromé certifikační autority se obvykle používají pro uzavřené skupiny a soukromé služby.
Vytvoření soukromé certifikační autority vám umožní konfigurovat, testovat a spouštět programy, které vyžadují šifrované připojení mezi klientem a serverem. Pomocí soukromé certifikační autority můžete vydávat certifikáty pro uživatele, servery nebo jednotlivé programy a služby v rámci vaší infrastruktury.
Několik příkladů programů v systému Linux, které používají vlastní soukromou certifikační autoritu, jsou OpenVPN a Puppet . Můžete také nakonfigurovat svůj webový server tak, aby používal certifikáty vydané soukromou certifikační autoritou, aby vývojová a stagingová prostředí odpovídala produkčním serverům, které používají TLS k šifrování spojení.
V tomto návodu se naučíme, jak nastavit soukromou certifikační autoritu na serveru Ubuntu 20.04 a jak vygenerovat a podepsat testovací certifikát pomocí nové certifikační autority. Dozvíte se také, jak importovat veřejný certifikát serveru certifikační autority do úložiště certifikátů operačního systému, abyste mohli ověřit řetězec důvěry mezi certifikační autoritou a vzdálenými servery nebo uživateli. Nakonec se dozvíte, jak odvolat certifikáty a distribuovat seznam odvolaných certifikátů, abyste zajistili, že služby, které se spoléhají na vaši certifikační autoritu, mohou používat pouze oprávnění uživatelé a systémy.
Předpoklady
Pro dokončení tohoto kurzu budete potřebovat přístup k serveru Ubuntu 20.04, na kterém bude umístěn server certifikační autority. Před zahájením tohoto návodu budete muset nakonfigurovat uživatele, který není root, s právy sudo
. Pro nastavení uživatele s příslušnými oprávněními můžete postupovat podle našeho průvodce počátečním nastavením serveru Ubuntu 20.04. V odkazovaném návodu bude také nastavena brána firewall, o které se v tomto návodu předpokládá, že je zavedena.
Tento server bude v tomto návodu označován jako server CA.
Ujistěte se, že server CA je samostatný systém. Bude sloužit pouze k importu, podepisování a odvolávání žádostí o certifikát. Neměly by na něm běžet žádné další služby a v ideálním případě bude offline nebo zcela vypnut, pokud nebudete s certifikační autoritou aktivně pracovat.
Poznámka: Poslední část tohoto návodu je volitelná, pokud se chcete dozvědět o podepisování a odvolávání certifikátů. Pokud se rozhodnete provést tyto cvičné kroky, budete potřebovat druhý server Ubuntu 20.04 nebo můžete také použít vlastní místní počítač se systémem Linux se systémem Ubuntu nebo Debian nebo distribucemi odvozenými od jedné z nich.
Krok 1 – Instalace Easy-RSA
Prvním úkolem tohoto návodu je nainstalovat na server certifikační autority sadu skriptů easy-rsa
. easy-rsa
je nástroj pro správu certifikační autority, který budete používat k vygenerování soukromého klíče a veřejného kořenového certifikátu, které pak budete používat k podepisování požadavků od klientů a serverů, které se budou spoléhat na vaši certifikační autoritu.
Přihlaste se k serveru certifikační autority jako uživatel sudo bez roota, kterého jste vytvořili během úvodních kroků instalace, a spusťte následující:
- sudo apt update
- sudo apt install easy-rsa
Budete vyzváni ke stažení balíčku a jeho instalaci. Stisknutím y
potvrďte, že chcete balíček nainstalovat.
V tuto chvíli máte vše potřebné nastaveno a připraveno k používání Easy-RSA. V dalším kroku vytvoříte infrastrukturu veřejných klíčů a poté začnete vytvářet certifikační autoritu.
Krok 2 – Příprava adresáře infrastruktury veřejných klíčů
Teď, když jste nainstalovali easy-rsa
, je čas vytvořit na serveru certifikační autority kostru infrastruktury veřejných klíčů (PKI). Ujistěte se, že jste stále přihlášeni jako uživatel bez roota, a vytvořte adresář easy-rsa
. Ujistěte se, že nepoužíváte sudo ke spuštění žádného z následujících příkazů, protože váš běžný uživatel by měl spravovat certifikační autoritu a komunikovat s ní bez zvýšených práv.
- mkdir ~/easy-rsa
Tím vytvoříte nový adresář easy-rsa
ve své domovské složce. Tento adresář použijeme k vytvoření symbolických odkazů směřujících na soubory balíčků easy-rsa
, které jsme nainstalovali v předchozím kroku. Tyto soubory se nacházejí ve složce /usr/share/easy-rsa
na serveru certifikační autority.
Vytvořte symbolické odkazy pomocí příkazu ln
:
- ln -s /usr/share/easy-rsa/* ~/easy-rsa/
Poznámka: Zatímco v jiných příručkách se můžete setkat s pokynem zkopírovat soubory balíčku easy-rsa
do adresáře PKI, v tomto návodu je použit přístup založený na symbolických odkazech. V důsledku toho se veškeré aktualizace balíčku easy-rsa
automaticky promítnou do skriptů vašeho PKI.
Pro omezení přístupu do nového adresáře PKI zajistěte, aby do něj měl přístup pouze vlastník pomocí příkazu chmod
:
- chmod 700 /home/sammy/easy-rsa
Nakonec inicializujte PKI uvnitř adresáře easy-rsa
:
- cd ~/easy-rsa
- ./easyrsa init-pki
Outputinit-pki complete; you may now create a CA or requests.Your newly created PKI dir is: /home/sammy/easy-rsa/pki
Po dokončení této části máte adresář, který obsahuje všechny soubory potřebné k vytvoření certifikační autority. V další části vytvoříte soukromý klíč a veřejný certifikát pro vaši certifikační autoritu.
Krok 3 – Vytvoření certifikační autority
Než budete moci vytvořit soukromý klíč a certifikát vaší certifikační autority, musíte vytvořit a naplnit soubor s názvem vars
některými výchozími hodnotami. Nejprve vložíte cd
do adresáře easy-rsa
, poté vytvoříte a upravíte soubor vars
pomocí nano
nebo vámi preferovaného textového editoru:
- cd ~/easy-rsa
- nano vars
Po otevření souboru vložte následující řádky a upravte jednotlivé zvýrazněné hodnoty tak, aby odrážely vaše vlastní informace o organizaci. Důležité je zde zajistit, abyste žádnou z hodnot nenechali prázdnou:
~/easy-rsa/varsset_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"
Po dokončení soubor uložte a zavřete. Pokud používáte nano
, můžete tak učinit stisknutím CTRL+X
, poté Y
a ENTER
pro potvrzení. Nyní jste připraveni vytvořit certifikační autoritu.
Pro vytvoření kořenového páru veřejného a soukromého klíče pro vaši certifikační autoritu spusťte znovu příkaz ./easy-rsa
, tentokrát s volbou build-ca
:
- ./easyrsa build-ca
Ve výstupu uvidíte několik řádků o verzi OpenSSL a budete vyzváni k zadání přístupové fráze pro váš pár klíčů. Ujistěte se, že jste zvolili silnou přístupovou frázi, a zapište si ji na bezpečné místo. Heslovou frázi budete muset zadat vždy, když budete potřebovat komunikovat s certifikační autoritou, například při podepisování nebo odvolávání certifikátu.
Budete také požádáni o potvrzení společného jména (CN) pro vaši certifikační autoritu. CN je název používaný pro označení tohoto počítače v kontextu certifikační autority. Pro Common Name certifikační autority můžete zadat libovolný řetězec znaků, ale pro zjednodušení stiskněte ENTER a přijměte výchozí název.
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
Poznámka: Pokud nechcete být při každé interakci s certifikační autoritou vyzváni k zadání hesla, můžete spustit příkaz build-ca
s volbou nopass
takto:
- ./easyrsa build-ca nopass
Máte nyní dva důležité soubory – ~/easy-rsa/pki/ca.crt
a ~/easy-rsa/pki/private/ca.key
– které tvoří veřejnou a soukromou součást certifikační autority.
-
ca.crt
je soubor veřejného certifikátu certifikační autority. Uživatelé, servery a klienti budou tento certifikát používat k ověření, že jsou součástí stejné sítě důvěry. Každý uživatel a server, který používá vaši certifikační autoritu, bude muset mít kopii tohoto souboru. Všechny strany se budou spoléhat na veřejný certifikát, aby se ujistily, že se někdo nevydává za systém a neprovádí útok Man-in-the-middle. -
ca.key
je soukromý klíč, který certifikační autorita používá k podepisování certifikátů pro servery a klienty. Pokud útočník získá přístup k vaší certifikační autoritě a následně k souboruca.key
, budete muset certifikační autoritu zničit. Proto by měl být souborca.key
pouze na počítači vaší certifikační autority a v ideálním případě by měl být počítač vaší certifikační autority v době, kdy nepodepisuje žádosti o certifikát, v režimu offline jako dodatečné bezpečnostní opatření.
Tímto je vaše certifikační autorita vytvořena a je připravena k podepisování žádostí o certifikát a k odvolávání certifikátů.
Krok 4 – Distribuce veřejného certifikátu vaší certifikační autority
Nyní je vaše certifikační autorita nakonfigurována a připravena fungovat jako kořen důvěry pro všechny systémy, které chcete nakonfigurovat k jejímu používání. Certifikát certifikační autority můžete přidat na servery OpenVPN, webové servery, poštovní servery atd. Každý uživatel nebo server, který potřebuje ověřit identitu jiného uživatele nebo serveru ve vaší síti, by měl mít kopii souboru ca.crt
importovanou do úložiště certifikátů svého operačního systému.
Chcete-li importovat veřejný certifikát certifikační autority do druhého systému Linux, například jiného serveru nebo místního počítače, získejte nejprve kopii souboru ca.crt
ze serveru certifikační autority. Můžete jej pomocí příkazu cat
vypsat do terminálu a poté zkopírovat a vložit do souboru v druhém počítači, který certifikát importuje. K přenosu souboru mezi systémy můžete také použít nástroje jako scp
, rsync
. My však v tomto kroku použijeme kopírování a vkládání pomocí příkazu nano
, protože bude fungovat ve všech systémech.
Jako uživatel bez roota na serveru certifikační autority spusťte následující příkaz:
- cat ~/easy-rsa/pki/ca.crt
V terminálu se zobrazí výstup podobný následujícímu:
Output-----BEGIN CERTIFICATE-----MIIDSzCCAjOgAwIBAgIUcR9Crsv3FBEujrPZnZnU4nSb5TMwDQYJKoZIhvcNAQELBQAwFjEUMBIGA1UEAwwLRWFzeS1SU0EgQ0EwHhcNMjAwMzE4MDMxNjI2WhcNMzAw. . .. . .-----END CERTIFICATE-----
Zkopírujte vše, včetně řádků -----BEGIN CERTIFICATE-----
a -----END CERTIFICATE-----
a pomlček.
V druhém systému Linux použijte nano
nebo vámi preferovaný textový editor a otevřete soubor s názvem /tmp/ca.crt
:
- nano /tmp/ca.crt
Vložte do editoru obsah, který jste právě zkopírovali ze serveru CA. Po dokončení soubor uložte a zavřete. Pokud používáte nano
, můžete tak učinit stisknutím CTRL+X
, poté Y
a ENTER
pro potvrzení.
Teď, když máte kopii souboru ca.crt
v druhém systému Linux, je čas importovat certifikát do jeho úložiště certifikátů operačního systému.
V systémech založených na Ubuntu a Debianu spusťte následující příkazy jako uživatel bez roota a importujte certifikát:
- sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/
- sudo update-ca-certificates
Chcete-li importovat certifikát serveru certifikační autority v systému CentOS, Fedora nebo RedHat, zkopírujte a vložte obsah souboru do systému stejně jako v předchozím příkladu do souboru s názvem /tmp/ca.crt
. Poté certifikát zkopírujete do souboru /etc/pki/ca-trust/source/anchors/
a spustíte příkaz update-ca-trust
.
- sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/
- sudo update-ca-trust
Nyní bude váš druhý systém Linux důvěřovat každému certifikátu, který byl podepsán serverem certifikační autority.
Poznámka: Pokud používáte certifikační autoritu s webovými servery a jako prohlížeč používáte Firefox, budete muset veřejný certifikát ca.crt
importovat přímo do Firefoxu. Firefox nepoužívá úložiště certifikátů místního operačního systému. Podrobnosti o tom, jak přidat certifikát vaší certifikační autority do Firefoxu, naleznete v tomto článku podpory Mozilly o nastavení certifikačních autorit ve Firefoxu.
Pokud používáte svou certifikační autoritu pro integraci s prostředím Windows nebo stolními počítači, podívejte se do dokumentace, jak pomocí certutil.exe
nainstalovat certifikát certifikační autority.
Pokud tento návod používáte jako přípravu pro jiný návod nebo jste seznámeni s tím, jak podepisovat a odvolávat certifikáty, můžete zde přestat. Pokud se chcete dozvědět více o tom, jak podepisovat a odvolávat certifikáty, pak následující volitelná část podrobně vysvětlí jednotlivé procesy.
(Volitelné) – Vytváření žádostí o podepsání certifikátu a odvolávání certifikátů
Následující části výukového kurzu jsou volitelné. Pokud jste dokončili všechny předchozí kroky, pak máte plně nakonfigurovanou a funkční certifikační autoritu, kterou můžete použít jako předpoklad pro další tutoriály. Můžete importovat soubor své certifikační autority ca.crt
a ověřovat certifikáty ve své síti, které byly podepsány vaší certifikační autoritou.
Pokud si chcete procvičit a dozvědět se více o tom, jak podepisovat žádosti o certifikát a jak certifikáty odvolávat, pak vám tyto volitelné části vysvětlí, jak oba procesy fungují.
(Volitelné) – Vytvoření a podepsání cvičné žádosti o certifikát
Teď, když máte certifikační autoritu připravenou k použití, můžete si procvičit generování soukromého klíče a žádosti o certifikát, abyste se seznámili s procesem podepisování a distribuce.
Žádost o podepsání certifikátu (CSR) se skládá ze tří částí: veřejného klíče, identifikačních informací o žádajícím systému a podpisu samotné žádosti, který je vytvořen pomocí soukromého klíče žádající strany. Soukromý klíč zůstane utajen a použije se k zašifrování informací, které pak může kdokoli s podepsaným veřejným certifikátem dešifrovat.
Následující kroky se provedou na druhém systému Ubuntu nebo Debian, případně na distribuci odvozené od některého z nich. Může to být jiný vzdálený server nebo místní linuxový počítač, například notebook nebo stolní počítač. Protože nástroj easy-rsa
není ve výchozím nastavení k dispozici ve všech systémech, použijeme k vytvoření cvičného soukromého klíče a certifikátu nástroj openssl
.
openssl
je obvykle ve výchozím nastavení nainstalován ve většině linuxových distribucí, ale pro jistotu spusťte ve svém systému následující příkaz:
- sudo apt update
- sudo apt install openssl
Když budete vyzváni k instalaci nástroje openssl
, zadejte y
a pokračujte v instalačních krocích. Nyní jste připraveni vytvořit cvičný CSR pomocí openssl
.
Prvním krokem, který musíte provést pro vytvoření CSR, je vygenerování soukromého klíče. Chcete-li vytvořit soukromý klíč pomocí openssl
, vytvořte adresář practice-csr
a poté v něm vygenerujte klíč. Na rozdíl od vytvoření certifikátu, který slouží k identifikaci uživatele nebo jiné certifikační autority, budeme tuto žádost podávat pro fiktivní server s názvem sammy-server
.
- mkdir ~/practice-csr
- cd ~/practice-csr
- openssl genrsa -out sammy-server.key
OutputGenerating RSA private key, 2048 bit long modulus (2 primes). . .. . .e is 65537 (0x010001)
Teď, když máte soukromý klíč, můžete vytvořit odpovídající CSR, opět pomocí nástroje openssl
. Budete vyzváni k vyplnění řady polí, jako je země, stát a město. Pokud chcete pole nechat prázdné, můžete zadat .
, ale uvědomte si, že pokud by se jednalo o skutečný CSR, je nejlepší použít správné hodnoty pro vaši lokalitu a organizaci:
- 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 :
Pokud chcete tyto hodnoty automaticky přidat jako součást volání openssl
místo prostřednictvím interaktivní výzvy, můžete OpenSSL předat argument -subj
. Nezapomeňte upravit zvýrazněné hodnoty tak, aby odpovídaly umístění vaší praxe, organizaci a názvu serveru:
- openssl req -new -key sammy-server.key -out server.req -subj \
- /C=US/ST=New\ York/L=New\ York\ City/O=DigitalOcean/OU=Community/CN=sammy-server
Chcete-li ověřit obsah CSR, můžete načíst soubor požadavku pomocí openssl
a prozkoumat pole uvnitř:
- openssl req -in sammy-server.req -noout -subject
Outputsubject=C = US, ST = New York, L = New York City, O = DigitalOcean, OU = Community, CN = sammy-server
Jakmile jste spokojeni s předmětem žádosti o certifikát vaší praxe, zkopírujte soubor sammy-server.req
na server certifikační autority pomocí scp
:
- scp sammy-server.req sammy@your_ca_server_ip:/tmp/sammy-server.req
V tomto kroku jste vygenerovali žádost o podepsání certifikátu pro fiktivní server s názvem sammy-server
. V reálném scénáři by požadavek mohl pocházet například ze stagingového nebo vývojového webového serveru, který potřebuje certifikát TLS pro testování; nebo by mohl pocházet ze serveru OpenVPN, který žádá o certifikát, aby se uživatelé mohli připojit k síti VPN. V dalším kroku přejdeme k podepsání žádosti o certifikát pomocí soukromého klíče serveru certifikační autority.
(Volitelné) – Podepsání CSR
V předchozím kroku jste vytvořili žádost o cvičný certifikát a klíč pro fiktivní server. Zkopírovali jste jej do adresáře /tmp
na serveru certifikační autority, čímž jste napodobili postup, který byste použili, kdyby vám skuteční klienti nebo servery posílali žádosti CSR, které je třeba podepsat.
Pokračujeme-li ve fiktivním scénáři, je nyní třeba importovat cvičný certifikát na server certifikační autority a podepsat jej. Jakmile je žádost o certifikát ověřena certifikační autoritou a předána zpět na server, klienti, kteří důvěřují certifikační autoritě, budou moci důvěřovat i nově vydanému certifikátu.
Protože budeme pracovat uvnitř PKI certifikační autority, kde je k dispozici nástroj easy-rsa
, budou kroky podepisování pro usnadnění práce používat nástroj easy-rsa
, na rozdíl od přímého použití nástroje openssl
, jak jsme to udělali v předchozím příkladu.
Prvním krokem k podepsání fiktivního CSR je import žádosti o certifikát pomocí skriptu 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.
Nyní můžete žádost podepsat spuštěním skriptu easyrsa
s volbou sign-req
, za kterou následuje typ žádosti a Common Name, který je součástí CSR. Typ požadavku může být buď jeden z client
, server
nebo ca
. Protože cvičíme s certifikátem pro fiktivní server, nezapomeňte použít typ požadavku server
:
- ./easyrsa sign-req server sammy-server
Ve výstupu budete vyzváni k ověření, že požadavek pochází z důvěryhodného zdroje. Zadejte yes
a poté stiskněte ENTER
pro potvrzení:
OutputYou 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
Pokud jste zašifrovali klíč certifikační autority, budete v tomto okamžiku vyzváni k zadání hesla.
Po dokončení těchto kroků jste podepsali sammy-server.req
CSR pomocí soukromého klíče serveru CA v /home/sammy/easy-rsa/pki/private/ca.key
. Výsledný soubor sammy-server.crt
obsahuje veřejný šifrovací klíč cvičného serveru a také nový podpis serveru CA. Smyslem podpisu je sdělit každému, kdo důvěřuje certifikační autoritě, že může důvěřovat i certifikátu sammy-server
.
Pokud by se tato žádost týkala skutečného serveru, například webového serveru nebo serveru VPN, posledním krokem na serveru certifikační autority by byla distribuce nových souborů sammy-server.crt
a ca.crt
ze serveru certifikační autority na vzdálený server, který podal žádost o CSR:
- scp pki/issued/sammy-server.crt sammy@your_server_ip:/tmp
- scp pki/ca.crt sammy@your_server_ip:/tmp
V tomto okamžiku byste mohli použít vydaný certifikát s něčím, jako je webový server, VPN, nástroj pro správu konfigurace, databázový systém nebo pro účely ověřování klientů.
(Volitelné) – Odvolání certifikátu
Příležitostně může být nutné odvolat certifikát, abyste zabránili uživateli nebo serveru v jeho používání. Možná byl někomu ukraden notebook, došlo ke kompromitaci webového serveru nebo zaměstnanec či dodavatel opustil vaši organizaci.
Pro odvolání certifikátu obecně platí následující postup:
- Odvolání certifikátu příkazem
./easyrsa revoke client_name
. - Vygenerování nového seznamu CRL příkazem
./easyrsa gen-crl
. - Přeneste aktualizovaný soubor
crl.pem
na server nebo servery, které se spoléhají na vaši certifikační autoritu, a v těchto systémech jej zkopírujte do požadovaného adresáře nebo adresářů pro programy, které se na něj odkazují. - Znovu spusťte všechny služby, které používají vaši certifikační autoritu a soubor CRL.
Tímto postupem můžete kdykoli odvolat všechny certifikáty, které jste dříve vydali. V následujících částech si podrobně projdeme jednotlivé kroky, přičemž začneme příkazem revoke
.
Odvolání certifikátu
Chcete-li odvolat certifikát, přejděte do adresáře easy-rsa
na serveru certifikační autority:
- cd ~/easy-rsa
Dále spusťte skript easyrsa
s volbou revoke
a zadejte jméno klienta, které chcete odvolat. Podle výše uvedeného praktického příkladu je běžné jméno certifikátu sammy-server
:
- ./easyrsa revoke sammy-server
Požádá vás o potvrzení odvolání zadáním yes
:
OutputPlease 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. . .
Všimněte si zvýrazněné hodnoty na řádku Revoking Certificate
. Tato hodnota je jedinečné sériové číslo certifikátu, který je odvoláván. Pokud budete chtít v posledním kroku této části prozkoumat seznam odvolaných certifikátů a ověřit, zda se v něm certifikát nachází, budete tuto hodnotu potřebovat.
Po potvrzení akce certifikační autorita certifikát odvolá. Vzdálené systémy, které se spoléhají na certifikační autoritu, však nemají možnost zkontrolovat, zda byl nějaký certifikát odvolán. Uživatelé a servery budou moci certifikát používat, dokud nebude seznam odvolaných certifikátů (CRL) certifikační autority rozeslán všem systémům, které se na certifikační autoritu spoléhají.
V dalším kroku vygenerujete seznam odvolaných certifikátů nebo aktualizujete stávající soubor crl.pem
.
Generování seznamu odvolaných certifikátů
Teď, když jste certifikát odvolali, je důležité aktualizovat seznam odvolaných certifikátů na serveru certifikační autority. Jakmile budete mít aktualizovaný seznam odvolaných certifikátů, budete moci zjistit, kteří uživatelé a systémy mají platné certifikáty ve vaší certifikační autoritě.
Pro vygenerování seznamu CRL spusťte příkaz easy-rsa
s volbou gen-crl
ještě uvnitř adresáře ~/easy-rsa
:
- ./easyrsa gen-crl
Pokud jste při vytváření souboru ca.key
použili přístupovou frázi, budete vyzváni k jejímu zadání. Příkaz gen-crl
vygeneruje soubor crl.pem
, který bude obsahovat aktualizovaný seznam odvolaných certifikátů pro danou certifikační autoritu.
Při každém spuštění příkazu gen-crl
budete muset přenést aktualizovaný soubor crl.pem
na všechny servery a klienty, kteří se spoléhají na tuto certifikační autoritu. Jinak budou klienti a systémy stále moci přistupovat ke službám a systémům, které používají vaši certifikační autoritu, protože tyto služby potřebují vědět o stavu odvolání certifikátu.
Přenos seznamu odvolaných certifikátů
Teď, když jste vygenerovali seznam odvolaných certifikátů na serveru certifikační autority, musíte jej přenést do vzdálených systémů, které se spoléhají na vaši certifikační autoritu. Pro přenos tohoto souboru na servery můžete použít příkaz scp
.
Poznámka: Tento návod vysvětluje, jak vygenerovat a distribuovat seznam CRL ručně. Existují sice robustnější a automatizované metody distribuce a kontroly seznamů odvolání, například OCSP-Stapling, ale konfigurace těchto metod přesahuje rámec tohoto článku.
Ujistěte se, že jste přihlášeni k serveru certifikační autority jako uživatel, který není root, a spusťte následující příkaz, přičemž místo your_server_ip
dosaďte IP adresu svého serveru nebo název DNS:
- scp ~/easy-rsa/pki/crl.pem sammy@your_server_ip:/tmp
Když je soubor ve vzdáleném systému, je posledním krokem aktualizace všech služeb pomocí nové kopie seznamu odvolání.
Aktualizace služeb, které podporují CRL
Uvedení kroků, které je třeba použít k aktualizaci služeb využívajících soubor crl.pem
, je nad rámec tohoto návodu. Obecně je třeba zkopírovat soubor crl.pem
do umístění, které služba očekává, a poté ji restartovat pomocí systemctl
.
Po aktualizaci služeb pomocí nového souboru crl.pem
budou vaše služby schopny odmítat připojení od klientů nebo serverů, které používají odvolaný certifikát.
Prozkoumání a ověření obsahu CRL
Pokud chcete soubor CRL prozkoumat, například potvrdit seznam odvolaných certifikátů, použijte následující příkaz openssl
z adresáře easy-rsa
na serveru certifikační autority:
- cd ~/easy-rsa
- openssl crl -in pki/crl.pem -noout -text
Tento příkaz můžete spustit také na libovolném serveru nebo systému, který má nainstalovaný nástroj openssl
s kopií souboru crl.pem
. Pokud jste například přenesli soubor crl.pem
do druhého systému a chcete ověřit, zda je certifikát sammy-server
odvolán, můžete použít příkaz openssl
, jako je následující, přičemž místo zvýrazněného čísla zde nahradíte sériové číslo, které jste zaznamenali dříve při odvolání certifikátu:
- 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
Všimněte si, jak se příkaz grep
používá ke kontrole jedinečného sériového čísla, které jste zaznamenali v kroku odvolání. Nyní můžete ověřit obsah seznamu odvolaných certifikátů v jakémkoli systému, který na něj spoléhá při omezování přístupu k uživatelům a službám.
Závěr
V tomto návodu jste vytvořili soukromou certifikační autoritu pomocí balíčku Easy-RSA na samostatném serveru Ubuntu 20.04.
. Naučili jste se, jak funguje model důvěryhodnosti mezi stranami, které se spoléhají na certifikační autoritu. Také jste vytvořili a podepsali žádost o podepsání certifikátu (CSR) pro cvičný server a poté jste se naučili, jak certifikát odvolat. Nakonec jste se naučili, jak vytvořit a distribuovat seznam odvolaných certifikátů (CRL) pro jakýkoli systém, který se spoléhá na vaši certifikační autoritu, abyste zajistili, že uživatelům nebo serverům, kteří nemají mít přístup ke službám, je v tom zabráněno.
Nyní můžete vydávat certifikáty pro uživatele a používat je se službami, jako je OpenVPN. Svou certifikační autoritu můžete také použít ke konfiguraci vývojových a stagingových webových serverů s certifikáty pro zabezpečení neprodukčních prostředí. Použití certifikační autority s certifikáty TLS během vývoje vám pomůže zajistit, aby váš kód a prostředí co nejvíce odpovídaly produkčnímu prostředí.
Pokud se chcete dozvědět více o tom, jak používat OpenSSL, můžete si přečíst naši knihu OpenSSL Essentials:
: Výukový kurz Práce s certifikáty SSL, soukromými klíči a certifikáty CSR obsahuje mnoho dalších informací, které vám pomohou lépe se seznámit se základy jazyka OpenSSL.