Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Následující verze | Předchozí verze | ||
it:iot:certifikat-lets-encrypt-uzavrena-sit [2024/12/22 12:47] – vytvořeno Petr Nosek | it:iot:certifikat-lets-encrypt-uzavrena-sit [2024/12/22 13:35] (aktuální) – Petr Nosek | ||
---|---|---|---|
Řádek 1: | Řádek 1: | ||
====== Certifikáty Let's Encrypt v uzavřené síti ====== | ====== Certifikáty Let's Encrypt v uzavřené síti ====== | ||
+ | ===== Vysvětlení různých typů challenge v Let's Encrypt ===== | ||
+ | |||
+ | Let's Encrypt umožňuje ověření domény pomocí několika metod, známých jako **challenge**. Každý typ challenge má své specifické požadavky a je vhodný pro různé situace: | ||
+ | |||
+ | * **HTTP-01 Challenge** | ||
+ | * Ověření probíhá pomocí souboru umístěného na HTTP serveru. | ||
+ | * Let's Encrypt pošle požadavek na konkrétní URL (např. `http:// | ||
+ | * **Použití: | ||
+ | * **Nevýhoda: | ||
+ | |||
+ | * **DNS-01 Challenge** | ||
+ | * Ověření se provádí vytvořením speciálního DNS TXT záznamu (např. `_acme-challenge.example.com`). | ||
+ | * Let's Encrypt ověří existenci tohoto záznamu v DNS. | ||
+ | * **Použití: | ||
+ | * **Výhoda: | ||
+ | |||
+ | * **TLS-ALPN-01 Challenge** | ||
+ | * Ověření probíhá pomocí speciálního TLS handshake. | ||
+ | * Vyžaduje specifickou konfiguraci TLS serveru. | ||
+ | * **Použití: | ||
+ | |||
+ | ===== Princip DNS-01 Challenge ===== | ||
+ | |||
+ | DNS-01 challenge je metoda ověření, která je obzvláště užitečná v případech, | ||
+ | |||
+ | * **Vytvoření TXT záznamu**: | ||
+ | Let's Encrypt poskytne specifický textový záznam (token), který je potřeba přidat do DNS jako `_acme-challenge.< | ||
+ | |||
+ | * **Ověření Let's Encrypt**: | ||
+ | Let's Encrypt zkontroluje DNS záznamy pro vaši doménu. Pokud záznam existuje a odpovídá očekávané hodnotě, ověření proběhne úspěšně. | ||
+ | |||
+ | * **Vystavení certifikátu**: | ||
+ | Po úspěšném ověření Let's Encrypt vygeneruje certifikát pro vaši doménu. | ||
+ | |||
+ | ===== Přínos DNS-01 Challenge v uzavřené síti ===== | ||
+ | |||
+ | V prostředí uzavřené sítě, kde: | ||
+ | - Doména směřuje na lokální IP adresy. | ||
+ | - Veřejný HTTP server není dostupný. | ||
+ | - Je potřeba zajistit šifrovanou komunikaci i pro subdomény. | ||
+ | |||
+ | DNS-01 challenge umožňuje: | ||
+ | |||
+ | * Generovat certifikáty pro subdomény (`*.example.com`). | ||
+ | * Automatizovat proces ověření pomocí API DNS poskytovatele (např. Cloudflare). | ||
+ | * Minimalizovat nutnost změn v lokální síti (pouze úprava DNS záznamů na straně poskytovatele). | ||
+ | |||
+ | ==== Příklad s doménou nosekpetr.cz ==== | ||
+ | |||
+ | Uvažujme, že vlastníte doménu `nosekpetr.cz`, | ||
+ | |||
+ | - Subdoména `teslamate.nosekpetr.cz` směruje na lokální IP adresu pomocí souboru `hosts` na klientech v síti. | ||
+ | - Pro ověření vlastnictví domény vytvoří Traefik pomocí DNS-01 challenge TXT záznam `_acme-challenge.teslamate.nosekpetr.cz` na Cloudflare. | ||
+ | - Let's Encrypt ověří záznam a vydá certifikát. | ||
+ | - Certifikát je poté použit pro šifrovanou komunikaci na subdoméně v lokální síti. | ||
+ | |||
+ | Tento přístup umožňuje provoz šifrovaných služeb v lokální síti bez nutnosti, aby byl server přímo dostupný z internetu. | ||
+ | |||
+ | |||
+ | ===== Převod domény ke Cloudflare ===== | ||
+ | |||
+ | <adm warning> | ||
+ | |||
+ | Rozhodl jsem se převést správu DNS záznamů na Cloudflare, protože Cloudflare nabízí API, které umožňuje automatizovat proces ověření pomocí DNS-01 challenge. Tento přístup eliminuje nutnost manuální správy TXT záznamů při každém ověření certifikátu. | ||
+ | |||
+ | Mou doménu `nosekpetr.cz` mám registrovanou u českého registrátora, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Proces zahrnoval založení účtu na Cloudflare a využití funkce pro přidání existující domény. Cloudflare mi následně poskytl nové nameservery, | ||
+ | |||
+ | |||
+ | Po nastavení nameserverů jsem vyčkal 24 hodin, aby se změny plně projevily. Poté jsem mohl začít editovat DNS záznamy přímo v rozhraní Cloudflare. | ||
+ | |||
+ | |||
+ | |||
+ | ==== Získání API klíče od Cloudflare ==== | ||
+ | |||
+ | Inspiroval jsem se v [[http:// | ||
+ | |||
+ | {{youtube> | ||
+ | |||
+ | Nejprve je potřeba získat autentizační údaj, který umožní pracovat s konkrétní doménou (zónou). Cloudflare nabízí dva typy takových údajů: | ||
+ | |||
+ | * **API keys** – globální klíče, které lze použít ke všem operacím v rámci celého účtu na Cloudflare. | ||
+ | * **API tokens** – specifické tokeny s omezeným přístupem, | ||
+ | |||
+ | Pro naše účely zvolíme **tokeny**, protože nabízejí vyšší úroveň bezpečnosti. Tokeny umožňují přesně definovat, k jakým datům a operacím mají přístup, čímž výrazně snižují riziko zneužití. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | Oproti návodu už nebudu pracovat s Certbotem, ale certifikáty obsloužím v [[it: |