Lets Encrypt

Prodloužení, tedy vygenerování nového certifikátu Let’s Encrypt se často provádí v prostředí serveru, kde je certifikát již nasazen. Co když ale potřebujeme vygenerovat nový certifikát jinde, než kde je nasazen a teprve potom jej přenést na server? Přesně o tom je tento krátký článek.

Zažádat a vygenerovat nový certifikát Let’s Encrypt nemusíme nutně dělat na serveru. Certifikát můžeme vygenerovat také na našem pracovním počítači a teprve potom jej nahrát na server. K tomu ale musí Let’s Encrypt mít nějakou cestu, jak ověří, že je tento požadavek skutečně autorizovaný. Let’s Encrypt proto dovoluje ověřit požadavek s pomocí doménového TXT záznamu. Nutno dodat, že tento postup není úplně pohodlný, nelze jej snadno automatizovat a ověření s pomocí TXT records má smysl provádět jen ve specifických případech, kdy jej nemůžete provádět na serveru.

Generování ověřovacího TXT záznamu během žádosti o Let’s Encrypt certifikát

./certbot-auto -d vase_domena.tld --manual --preferred-challenges dns certonly

Tento jednořádkový příkaz zajistí vygenerování žádosti o nový certifikát včetně TXT záznamu.

_acme-challenge.vase_domena.tld
82Pa7NCUCTM6YZmzaWTlZhSc7i02_CVO7K_S0NpGr9Y

Vygenerovaný TXT záznam nastavte u svého registrátora v nastavení DNS záznamů pro Vaši doménu. Script nyní čeká na vaše potvrzení, že je záznam správně nastaven. Pozor, propagace nastavení může v DNS trvat i několik hodin, proto s odentrováním nespěchejte. Dejte si proto dvě hodinky přestávku a pak se ke klávesnici vraťte. Pokud budete příliš aktivní, Let’s Encrypt tento DNS záznam nenajde a proces vygenerování certifikátu odmítne. Budete nuceni začít znovu od začátku.

Pokud se ke klávesnici vrátíte příliš pozdě, zřejmě Vás překvapí, že script skončil s timeoutem. Let’s Encrypt naštěstí tento stav umí rozlišit a Vaši předchozí žádost eviduje. Stačí proto script spustit znovu. Měl by Vám vygenerovat stejný hash jako při předchozím pokusu.

V závěru celého postupu byste měli získat certifikát spolu s privátním klíčem, který můžete bezpečně přenést na svůj server.