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

Certifikáty Let's Encrypt v uzavřené síti

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.

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.

V prostředí uzavřené sítě, kde:

  1. Doména směřuje na lokální IP adresy.
  2. Veřejný HTTP server není dostupný.
  3. 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).

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.

  1. Subdoména `teslamate.nosekpetr.cz` směruje na lokální IP adresu pomocí souboru `hosts` na klientech v síti.
  2. Pro ověření vlastnictví domény vytvoří Traefik pomocí DNS-01 challenge TXT záznam `_acme-challenge.teslamate.nosekpetr.cz` na Cloudflare.
  3. Let's Encrypt ověří záznam a vydá certifikát.
  4. 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.

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.

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.

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.

Inspiroval jsem se v tomto návodu. Hezky je postup vysvětlený i na videu:

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í.

Oproti návodu už nebudu pracovat s Certbotem, ale certifikáty obsloužím v Traefik - reverzní proxy.

  • it/iot/certifikat-lets-encrypt-uzavrena-sit.txt
  • Poslední úprava: 2024/12/22 14:35
  • autor: Petr Nosek