GNU/Linux >> Znalost Linux >  >> Linux

Jak spravovat certifikáty Lets Encrypt SSL/TLS pomocí certbota

Pojďme šifrovat je automatizovaná a otevřená certifikační autorita (CA) provozovaná Internet Security Research Group (ISRG) a založená Electronic Frontier Foundation (EFF), Mozilla Foundation a další. Poskytuje bezplatné certifikáty SSL/TLS, které se běžně používají k šifrování komunikace pro účely zabezpečení a ochrany soukromí, přičemž nejpozoruhodnějším případem použití je HTTPS. Let's Encrypt se při vydávání, odvolávání a obnovování certifikátů spoléhá na protokol ACME (Automatic Certificate Management Environment). Certbot je bezplatný nástroj s otevřeným zdrojovým kódem používaný hlavně pro správu certifikátů SSL/TLS z Let's Encrypt certifikační autorita. Je k dispozici pro většinu operačních systémů UNIX a UNIX podobných, včetně GNU/Linux, FreeBSD, OpenBSD a OS X. Tato příručka poskytne platformně agnostický úvod do použití certbota.

POZNÁMKA: Protože certbot je ve vývoji, některé funkce nebo chování popsané v této příručce se mohou ve starších nebo budoucích verzích lišit.

Požadavky

  • Registrovaný název domény se záznamem A odkazujícím na vaši adresu IPv4. Jako příklad bude použit `www.example.com`.
  • Přístup k privilegovanému prostředí.

Obecné pojmy

Provozní režimy

Použití certbota k povolení HTTPS lze rozdělit do dvou částí:Autentizace a Instalace. První vyžaduje vyřešení výzvy a uložení certifikátu a dalších souborů. Krok instalace zahrnuje konfiguraci a zabezpečení webového serveru. Certbot může automaticky provést obojí pomocí dílčího příkazu run. Dílčí příkazy certonly a install jsou pro kroky ověřování a instalace.

Certbot také obsahuje funkce obnovy a odvolání certifikátu.

Výzvy

Získání certifikátu Let's Encrypt zahrnuje vyřešení problému ověření domény vydaného serverem ACME (Automatic Certificate Management Environment). Tato výzva ověřuje vaše vlastnictví domén (domén), pro které se pokoušíte získat certifikát. Existují různé typy výzev, nejčastěji používaným je HTTP-01. Jak jeho název napovídá, používá protokol HTTP. Zatímco servery HTTP lze nakonfigurovat tak, aby používaly jakýkoli port TCP, tato výzva bude fungovat pouze na portu 80 kvůli bezpečnostním opatřením. DNS-01 je další, méně oblíbený typ výzvy založený na překladu DNS. Upozorňujeme, že certifikáty se zástupnými znaky nelze získat prostřednictvím výzvy HTTP-01. Tato příručka se zpočátku zaměří na HTTP-01.

Pluginy

Certbot se při ověřování a instalaci spoléhá na pluginy. Pluginy jako webroot a standalone provádějí pouze ověřování, zatímco jiné, jako jsou pluginy Apache a Nginx, jsou navrženy tak, aby automaticky získávaly a instalovaly certifikáty (tj. konfigurace webového serveru). Mezi další zásuvné moduly patří několik zásuvných modulů DNS specifických pro dodavatele pro ověřování DNS-01. Většina pluginů certbot se instaluje samostatně, kromě webroot a samostatných pluginů, které jsou vestavěné.

Instalace Certbota

Většina distribucí Linuxu poskytuje certbot ve svých oficiálních repozitářích. Níže jsou uvedeny pokyny k instalaci pro široce používané platformy.

Debian a Ubuntu:

apt update
apt install -y certbot

CentOS 7:

yum install -y certbot

Fedora a CentOS 8:

dnf install -y certbot

Arch Linux:

pacman -Sy certbot

FreeBSD:

pkg install py36-certbot

OpenBSD 6.0 a novější:

pkg_add certbot

MacOS (vyžaduje domácí vaření):

brew install letsencrypt

Jiné:

Pokud pro vaši platformu není k dispozici balíček certbot, můžete použít oficiální skript certbot-auto wrapper k automatické instalaci certbota do vašeho systému. Lze jej stáhnout zde.

Používání Certbot

Výpis certifikátů

Chcete-li zobrazit seznam certifikátů spravovaných certbotem na vašem serveru, zadejte příkaz:

certbot certificates

Získání certifikátu pro ruční konfiguraci

Pokud se rozhodnete svůj webový server nakonfigurovat ručně, lze certifikát získat dvěma způsoby. Buď poskytnutím přístupu certbotu do kořenového adresáře webu vašeho serveru (tj. plugin webroot), nebo nasazením dočasného samostatného webového serveru na portu 80 (tj. samostatného pluginu). Posledně jmenovaný plugin je užitečný v případech, kdy integrace s vaším stávajícím webovým serverem není možná nebo není žádoucí. Pro pohodlí a jednodušší obnovování postupujte v souladu s použitým pluginem.

Pomocí existujícího webového serveru

Chcete-li použít svůj stávající webový server, před provedením následujícího příkazu se ujistěte, že běží a naslouchá na portu 80

certbot certonly --webroot

Budete vyzváni k zadání, kromě jiných informací, názvu vaší domény (názvů) a cesty k vašemu webrootu, což je ve výchozím nastavení na většině systémů Linux `/var/www/html/`. Případně můžete zadat požadované informace jako argumenty příkazu. Například:

certbot certonly --webroot --webroot-path /var/www/html --agree-tos -m [email protected] -d www.example.com

Pomocí samostatného webového serveru

Chcete-li používat samostatný server, nejprve zajistěte dostupnost portu 80. Všechny procesy, které se vážou k tomuto portu, můžete zkontrolovat pomocí:

ss -lntp 'sport = 80'

V případě potřeby zastavte problematickou službu/proces, než budete pokračovat. Poté zadejte příkaz:

certbot certonly --standalone

Jakmile je certifikát vydán, budete muset svůj webový server nakonfigurovat ručně. Příslušné soubory lze nalézt v /etc/letsencrypt/live/vaše_doména.

Interaktivní instalace HTTPS

Jak již bylo zmíněno dříve, certbot dokáže automatizovat celý proces nastavení HTTPS, včetně konfigurace webového serveru. Pluginy jsou k dispozici pro Apache i Nginx a může být nutné je nainstalovat jako samostatný balíček. Nainstalujte plugin certbot specifický pro váš webový server a poté spusťte `certbot run --PLUGIN_NAME`. Celý proces pro Apache si ukážeme na systému Debian 10. Postup pro Nginx je podobný.

apt install -y python-certbot-apache
certbot run --apache

Za předpokladu, že váš webový server je již nakonfigurován pro vaše názvy domén, certbot analyzuje stávající konfiguraci a vyzve vás, abyste vybrali, pro které názvy domén má být HTTPS aktivováno. Pokud váš webový server není nakonfigurován nebo pokud certbot nezjistí vaše doménové jméno (názvy), jednoduše po výzvě zadejte své doménové jméno (názvy) ručně. Například:

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: www.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1

Certbot vytvoří nový konfigurační soubor Apache pro vašeho nového virtuálního hostitele HTTPS a zeptá se, zda by měl být provoz HTTP přesměrován na HTTPS. Pokud nemáte pádné důvody, abyste to neudělali, měli byste povolit přesměrování na HTTPS.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/www.example.com.conf to ssl vhost in /etc/apache2/sites-available/www.example.com-le-ssl.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://www.example.com

Obnovení certifikátů

Ruční obnovení

Chcete-li obnovit své certifikáty pomocí certbotu, můžete použít dílčí příkaz renew. Během obnovy bude certbot používat stejné pluginy a možnosti, jaké byly použity pro původní vydání. Certifikáty se obnovují pouze v případě, že jejich platnost vyprší za méně než 30 dní, takže tento dílčí příkaz lze používat libovolně často, protože neprovede žádnou akci, pokud se blíží datum vypršení platnosti certifikátů. Příkaz je jednoduše:

certbot renew

Pokud byl k vydání certifikátu použit samostatný plugin, budete muset zastavit svůj webový server, aby obnovení proběhlo úspěšně. Můžete toho dosáhnout pomocí háčků. Pokud například systém spustí Apache, příkaz bude:

certbot renew --pre-hook "systemctl stop apache2.service" --post-hook "systemctl start apache2.service"

Automatické obnovení

Mnoho distribucí má ve výchozím nastavení povoleno automatické obnovování, buď prostřednictvím systémových časovačů nebo úloh cron. Časovače systemd můžete zkontrolovat pomocí:

systemctl list-timers

A pro úlohy cron pomocí:

ls /etc/cron*

Pokud byl pro vydání použit webroot plugin, automatické obnovení by mělo být úspěšné, dokud váš webový server běží. Se samostatným zásuvným modulem však výchozí příkaz pro automatické obnovení selže v případě, že je spuštěn webový server, protože certbot se nebude moci vázat na port 80. Je tedy nutné jej upravit přidáním háčků, jak je uvedeno výše.

Zrušení certifikátů

Zrušení certifikátu lze dosáhnout zadáním cesty nebo názvu certifikátu:

certbot revoke --cert-name cert_name
(OR)
certbot revoke --cert-path /path/to/cert.pem

Například:

certbot revoke --cert-name www.example.net

Po spuštění dílčího příkazu revoke se certbot zeptá, zda mají být soubory certifikátu odstraněny. Pokud se rozhodnete je neodstranit, bude zrušený certifikát obnoven při příštím obnovení. Dílčímu příkazu revoke lze předat několik samovysvětlujících voleb:

  • --delete-after-revoke (výzva k výběru uživatele ve výchozím nastavení)
  • --no-delete-after-revoke (výzva k výběru uživatele ve výchozím nastavení)
  • --reason [nespecifikováno,klíčový kompromis,přidružení změněno,nahrazeno, ukončení provozu] (Výchozí:nespecifikováno)

Certifikáty zástupných karet

Jeden zástupný certifikát lze použít k identifikaci více subdomén, jako alternativu k samostatným běžným certifikátům. Chcete-li získat certifikát zástupných znaků, musíte použít výzvu DNS-01. I když je k dispozici několik zásuvných modulů specifických pro dodavatele, které automatizují proces ověřování ACME, vysvětlíme ruční, na dodavatele neutrální proces. Je vyžadován přístup k jmenným serverům pro vaši doménu.

K vyžádání certifikátu se zástupnými znaky použijte následující příkaz:

certbot certonly --manual --preferred-challenges dns-01 -d *.example.net

Certbot zobrazí hodnotu, která by měla být nasazena v záznamu DNS TXT. Tento záznam TXT slouží jako nezbytné ověření vlastnictví.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.example.net with the following value:
y77OkxXi89sJLjUgYu-HReYrcVlxt_bfG8yVOVKngBOcU
Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue

Než budete pokračovat, budete muset vytvořit zadaný záznam v ovládacím panelu DNS. Jakmile je záznam vytvořen, počkejte několik minut, než stisknete klávesu Enter, což spustí server ACME k ověření. V některých případech může být vyžadována delší doba čekání, aby se nový záznam správně rozšířil a byl dostupný. Po úspěchu se certifikát, řetězec a soukromý klíč uloží do /etc/letsencrypt/live/example.com/.

Odkazy a další informace

  • Oficiální úložiště Certbot Github
  • Automatic Certificate Management Environment (ACME) RFC 8555
  • Dokumentace EFF Certbot
  • Manová stránka Certbot(1)

Linux
  1. Jak zabezpečit své e-mailové služby Linux pomocí SSL/TLS

  2. Jak zabezpečit účet s podporou cPanel pomocí certifikátu Lets Encrypt SSL

  3. Jak nakonfigurovat VSFTPD se šifrovaným připojením SSL/TLS?

  1. Jak zabezpečit účet s podporou cPanel pomocí certifikátu Sectigo SSL

  2. Zabezpečení ISPConfig 3.1 pomocí bezplatného šifrovacího certifikátu SSL

  3. Jak zabezpečit název hostitele Plesk na portu 8443 pomocí certifikátu SSL

  1. Myšlenky na středně kompatibilní SSL s certifikáty Lets Encrypt

  2. Jak nainstalovat DokuWiki pomocí Lets Encrypt SSL na Debian 11

  3. Jak zabezpečit připojení pomocí certifikátů SSL/TLS