it:iot:certifikat-lets-encrypt-uzavrena-sit

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
it:iot:certifikat-lets-encrypt-uzavrena-sit [2024/12/22 12:47] – vytvořeno Petr Nosekit: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://example.com/.well-known/acme-challenge/`).
 +    * **Použití:** Jednoduché nastavení pro veřejné servery, které mohou přijímat požadavky z internetu.
 +    * **Nevýhoda:** Nevhodné pro uzavřené sítě nebo pokud není dostupný veřejný HTTP server.
 +
 +  * **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í:** Ideální pro situace, kdy není možné použít HTTP-01 challenge, např. uzavřené sítě nebo dynamické webové aplikace.
 +    * **Výhoda:** Umožňuje generovat wildcard certifikáty (např. `*.example.com`).
 +
 +  * **TLS-ALPN-01 Challenge**  
 +    * Ověření probíhá pomocí speciálního TLS handshake.
 +    * Vyžaduje specifickou konfiguraci TLS serveru.
 +    * **Použití:** Vhodné pro některé specifické aplikace, ale méně běžné než HTTP-01 nebo DNS-01.
 +
 +===== Princip DNS-01 Challenge =====
 +
 +DNS-01 challenge je metoda ověření, která je obzvláště užitečná v případech, kdy server není přímo dostupný z internetu nebo je umístěn v uzavřené síti. Funguje následujícím způsobem:
 +
 +  * **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.<doména>`.
 +
 +  * **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`, která je hostována na Cloudflare, a chcete provozovat subdoménu `teslamate.nosekpetr.cz` v uzavřené lokální síti.
 +
 +  - 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>Je důležité věnovat pozornost nastavení DNSSEC. Pokud je na doméně aktivní, je nutné jej nejprve vypnout a počkat alespoň 24 hodin, než provedete změny nameserverů a další konfigurace na Cloudflare.</adm>
 +
 +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, ale jednoduše jsem si nastavil, aby DNS záznamy spravoval Cloudflare. 
 +
 +{{:it:iot:pasted:20241222-142214.png}}
 +
 +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, které jsem nastavil v administraci u svého registrátora.
 +
 +
 +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://https://www.altair.blog/2024/06/cloudflare-certbot|tomto návodu]]. Hezky je postup vysvětlený i na videu:
 +
 +{{youtube>pGrYUbgA7DQ?}}
 +
 +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, které jsou navrženy pro konkrétní operace a domény (zóny).
 +
 +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í.
 +
 +{{:it:iot:pasted:20241222-143226.png}}
 +
 +{{:it:iot:pasted:20241222-143232.png}}
 +
 +{{:it:iot:pasted:20241222-143237.png}}
 +
 +{{:it:iot:pasted:20241222-143242.png}}
 +
 +{{:it:iot:pasted:20241222-143255.png}}
 +
 +
 +Oproti návodu už nebudu pracovat s Certbotem, ale certifikáty obsloužím v [[it:server:traefik-reverzni-proxy|]].
  • it/iot/certifikat-lets-encrypt-uzavrena-sit.1734871630.txt.gz
  • Poslední úprava: 2024/12/22 12:47
  • autor: Petr Nosek