Jak vygenerovat certifikáty Let’s Encrypt s pomocí ACMESharp (1): Úvod

V tomto seriálu se budu věnovat nasazení certifikátů certifikační autority Let’s Encrypt, které jsou k dispozici zdarma. Specialitou tohoto návodu bude generování certifikátů pro prostředí, které je offline, tedy bez přístupu k internetu.

Certifikační autorita Let’s Encrypt

Let’s Encrypt je plně automatizovaná certifikační autorita, která vydává certifikáty zdarma.

Vlastnosti/možnosti služby a jejich certifikátů:

  • vystavené certifikáty jsou zcela zdarma,
  • jsou k dispozici pouze HTTPS/SSL certifikáty,
  • omezená doba platnosti certifikátů jsou tři měsíce,
  • Let’s Encrypt je známý pro spoustu platforem, klíčové pro mne jsou:
    • Microsoft Windows,
    • Apple iOS/iPadOS/macOS,
    • Google Android,
    • Linux.

 

Certifikáty jsou poskytovány v režimu Domain Validated, tedy vlastník certifikátu vlastní doménu. Není k dispozici jiná možnost ověření, nebo jiný typ certifikátu.

Ověření vlastnictví domény (v rámci zaměření našeho článku) je možné s pomocí dvou režimů:

  • HTTP Challenge (na požadované URL je k dispizici řetězec potvrzující vlastnictví domény),
  • DNS Challenge (TXT záznamy v DNS záznamech u každé z domén).

 

Celý proces žádosti o certifikát, ověření domény probíhá skrze vlastní protokol ACME a poskytuje REST API, skrze které je možné celý proces automatizovat skrze jakoukoli aplikaci, nebo vlastní řešení.

 

Požadavky a omezení

  • Primárně je požadována podpora platformy Windows pro celý proces žádosti a stažení nových certifikátů.
  • Možnost exportu certifikátů ve formátu PFX pro Windows (PKCS).
  • Možnost ověření žádosti metodou DNS Challenge (TXT záznamy v DNS záznamech u každé z domén).
  • Nepoužívat automatizovaný proces instalace certifikátů do systému.
  • Nevyžadovat instalovaný IIS.
  • Podpora generování certifikátů s více DNS.
  • Vyhnout se požadavku na otevřený port HTTP (TCP 80).

 

Důvody pro tyto požadavky jsou následující:

První z důvodů, proč mám uvedené požadavky je, protože někteří moji zákazníci stále používají Windows SBS 2011. Protože SBS je specifický operační systém, nechci riskovat nepříjemné situace, kdy dotyčný nástroj něco provede a poškodí tím existující konfiguraci v IIS, například Exchange OWA, Remote Workplace, nebo TS Gateway.

Druhý důvod, je potřeba generování certifikátu pro síťové prvky, tedy routery, switche, nebo síťové storage (NAS), kde není možné klienta Let’s Encrypt provozovat.

Třetím důvodem je, že v mnoha případech jsou cílová zařízení (pro instalaci certifikátu) nedostupné online a jedná se o žádost o certifikát pro intranetovou adresu, například tato adresa: https://home.intranet.zobec.net/.

Proto potřebuji mít možnost generovat certifikáty offline.

 

 

Nevyhovující klienti Let’s Encrypt

Vzhledem k výše uvedeným požadavkům, nespadají mezi vyhovující klienty tito klienti/nástroje:

  • Certify
  • Let’s Encrypt Win Simple

 

Před dvěma lety, kdy jsem prováděl tuto rešerši, ještě Certify neuměl ověření DNS Challenge, bohužel zdá se, že stále vyžaduje pro svůj běh IIS, takže stále nezapadá mezi moje požadavky.

 

ACMESharp

Při hledání nějakého alternativního klienta jsem narazil na klienta ACMESharp pro PowerShell. Jeho používání je zpočátku poněkud složitější, ale má slušnou dokumentaci včetně užitečné úvodní příručky QuickStart, která mi dost pomohla zvládnout rychle počáteční rozjezd.

Podstatnou výhodou klienta ACMESharp je to, že se jedná o PowerShell commandlet. Tedy dá se veškerá aktivita později naskriptovat, tedy automatizovat.

Protože v době průzkumu to byl jediný klient, který splňoval všechny mé požadavky, v podstatě mi nic jiného nezbývalo, než jej zkusit 🙂

Nakonec jsem ale rád, i když může být ovládání pro někoho poměrně dost složité a má svoje specifika, jedná se o dost silný nástroj s neomezenými možnostmi.

 

 

Seriál Jak vygenerovat certifikáty Let’s Encrypt s pomocí ACMESharp

 

Odkazy

 

Michal Zobec

Michal Zobec Senior IT Consultant, Project Manager ZOBEC Consulting