Při získávání certifikátů od CA Let's Encrypt se zpravidla používá http-01 challenge, kdy se ověřuje kontrola nad doménou pomocí HTTP requestu na definovanou URL. To je velice snadné a dá se to jednoduše automatizovat. Na Linuxu můžete použít Certbot, na Windows + IIS třeba AutoACME nebo win-acme.
Někdy se ale hodí dns-01 challenge, kdy se kontrola nad doménou ověřuje pomocí DNS záznamů. To je náročnější (protože je třeba mít možnost vytvořit patřičné DNS záznamy pomocí nějakého API, což ne každé řešení umožňuje), ale má to své výhody:
- Můžete tak získat wildcard certifikát, platný pro všechny záznamy v dané doméně, např.
*.example.com
. - Můžete tak získat certifikát pro server, který není dostupný přes HTTP (SMTP, FTP, MQTT...) anebo dokonce sice má FQDN z veřejné domény, ale není z Internetu přímo dostupný. Může být například dostupný pouze z vnitřní sítě nebo pomocí VPN.
V tomto labu si ukážeme, jak takový certifikát získat, pokud je váš DNS provozován u Cloudflare. Návod je psán pro Raspberry Pi OS, ale bude přiměřeně platit i pro ostatní distribuce Linuxu.
Získání API tokenu od Cloudflare
Nejprve budeme muset získat autentizační údaj, který umožní pracovat s danou doménou (zónou). Cloudflare rozeznává dva druhy takových údajů:
- API keys jsou globální a můžeme je použít k jakýmkoliv operacím v rámci daného CF účtu.
- API tokens jsou omezené na určitou množinu operací s konkrétní doménou (zónou).
Budeme používat tokeny, protože je to bezpečnější.
1. | Přihlašte se do Cloudflare Dashboard na adrese https://dash.cloudflare.com/. |
---|---|
2. | Klepněte v pravém horním rohu na ikonu uživatele a pak na My Profile. |
3. | Klepněte v levém menu na API Tokens a poté na Create Token. |
4. | Vyberte šablonu Edit zone DNS. |
5. | Vyberte jednu nebo více zón, které má mít tento token možnost editovat a klepněte na Continue to summary. |
Můžete také nastavit časové omezení platnosti tokenu a případě omezení IP adres, z nichž smí být používán. |
|
6. | V potvrzovacím dialogu klepněte na Create token. |
7. | Zobrazí se vám token, který si pečlivě poznamenejte. Nebudete ho moci později zobrazit, ale budete ho později potřebovat. |
Pomocí příkazu
Pozor, Cloudflarem nabídnutý příkaz bude fungovat jenom v Bashi. Ve Windows s
V PowesShellu musíte název příkazu napsat včetně přípony
|
Instalace utility Certbot
Certbot je program od EFF, který se stará o získávání a obnovování certifikátů. Bohužel nefunguje na Windows, ale na Linuxu funguje výborně.
8. | Pokud váš systém podporuje Snap (Ubuntu a některé další distribuce), naninstalujte ho následujícím příkazem:
|
---|---|
9. | Pokud příkaz skončil chybou, např.
Poté znovu zadejte příkaz pro instalaci Certbota:
|
10. | Následujícím příkazem vytvořte symlink, pomocí kterého bude možné Certbota snadno spouštět:
|
11. | Následujícími příkazy nainstalujte plugin pro Cloudflare a určíte, že má běžet ve stejném kontextu, jako certbot sám:
|
12. | Vytvořte adresář
|
13. | Následujícím příkazem vytvořte soubor
|
14. | Zadejte do souboru následující obsah (použijte token, který jste vytvořili v kroku 7):
|
15. | Uložte provedené změny klávesovou zkratkou Ctrl+S a ukončete editor pomocí Ctrl+X. |
16. | Následujícími příkazy zajistěte, že k souboru nebude mít přístup nikdo jiný, než
|
Žádost o certifikát
17. | Následujícím příkazem pošlete žádost o certifikát (samozřejmě nahraďte
Při prvním spuštění budete požádáni o zadání e-mailové adresy, souhlas s licenčními podmínkami a souhlas se zasíláním zpráv od EFF (ten je volitelný). |
---|---|
Pokud chcete vydat certifikát platný pro více DNS jmen, použijte parametr
Pokud chcete požádat o wildcard certifikát, použijte hvězdičku:
|
|
Pozor, wildcard certifikát Wildcard |
|
18. | Nyní máte v adresáři
Záleží na použitém serverovém software, zda bude chtít certifikát a chain dohromady nebo zvlášť a jakou formou má být konfigurován. |