Let’s Encrypt na Windows Server 2016 – PowerShell a ACMESharp #2 – skript PoC

Rychlá a nedokonalá implementace automatizace vystavování nových Let’s Encrypt certifikátů pro Web Application Proxy na Windows Serveru 2016. Samozřejmě předpokládáme již nakonfigurované prostředí (vault, ověřené domény a definované aliasy pro domény)  – např. podle http://www.jan-zak.cz/lets-encrypt-ws2016-powershell-acmesharp/  🙂

Doporučná perioda vystavování je 60 dnů, takže stačí nastavit Task Scheduler na každé dva měsíce a máme vystaráno (samozřejmě dokud se něco nezmění na straně LE).

 

Let’s Encrypt na Windows Server 2016 – PowerShell a ACMESharp

Po prodeji StartSSL WoSignu jsou jejich certifikáty prozatím nepoužitelné, proto jsem se musel po roce vrátit k prozkoumání aktuálního stavu nasazení Let’s Encrypt na Windows Serveru. Naštěstí už je k dispozici sada commandletů pro PowerShell ACMESharp (aktuálně ve verzi 0.8.1), která překvapivě funguje :).

Níže uvedený postup funguje s PowerShellem v5, ale starší verze by měly fungovat víceméně stejně (s výjimkou komplikovanější instalace z PowerShell Gallery).

1/ Instalace ACMESharpu

Vytvoříme pracovní adresář a stáhneme modul z PowerShell Gallery vč. podpory NuGet:

Naimportujeme modul a koukneme, co umí:

2/ Vytvoření „trezoru“

Nyní je třeba se dobře rozmyslet, jak/zda hodláme automatizovat následné vystavování certifikátů (jsou platné 90 dnů). Pokud je PS spuštěn pod admin účtem, adresář s vaultem se vytvoří v „C:\ProgramData“ a bude použitelná pro všechny. V opačném případě se vault vytovří v uživatelském profilu.

Použitý email se potvrzovat nemusí, ale rozhodně je dobrý nápad použít skutečný a funkční email 🙂

Tady můžete poprvé narazit na chybu serveru:

Poučení – chyby jsou docela časté, nejlepší je zkusit později znovu. Na to je potřeba pamatovat při následné automatizaci. Takže znovu:

Kontrola co máme ve vaultu (zatím nic moc):

3/ Registrace a potvrzení vlastnictví domény

Teď zaregistrovat doménová jména, která hodláte v certifikátech používat, a nastavit jim aliasy. Ty se následně často používají, rozhodně volte rozumná a jednoznačné hodnoty:

Status je „pending“, nyní je potřeba ověřit vlastnictví domény. K dispozici je více možností, mně nejvíce vyhovuje vytvoření TXT záznamů v DNS:

Podle instrukcí vytvořte novou položku v DNS a počkejte na replikaci:

Nyní můžeme odeslat požadavek na kontrolu a schválení:

Počkáme a zkontrolujeme stav:

Pokud máme „valid“, můžeme pokračovat. Jen pro zajímavost, co máme ve vaultu:

4/ Vytvoření a odeslání žádosti o certifikát

Pro vytvoření jednoduchého certifikát s jediným předmětem (CN) stačí např.:

Opět nezapomeňte na rozumné pojmenování certifikátu (alias).

Pro certifikát se SAN/DNS atributy je potřeba zaregistovat (a ověřit) další jména:

Certifikáty (resp. žádosti) si můžete připravit ještě před ověřením vlastnictví domény, s odesláním ale počkejte na úspěšné ověření.

Žádosti ve vaultu jsou prozatím ve sériových čísel a dalších informací:

Odeslání žádosti k podpisu:

Pokus o odeslání žádosti obsahující neověřená DNS jména skončí chybovou hláškou:

Rychlá oprava:

Následné odeslání k podpisu skončí s chybou (již bylo odesláno), ale můžeme podepsání vynutit:

Při výpisu certifikátů je dobré zkontrolovat, zda certifikáty obsahují „IssuerSerialNumber“ a další náležitosti. Pokud ne, je potřeba provést aktualizaci – jinak  nebude možné certifikáty vyexportovat:

Provedeme update a následný export certifikátu do souboru .PFX s heslem:

Export intermediate certifikátu (lze předpokládat občasné změny):

5 /Instalace certifikátu

Konverze hesla a následný import certifikátů a privátních klíců do úložiště Windows:

Kontrola:

..a kontrola obsahu vaultu:

Nyní konečně můžeme nakonfigurovt aplikace a naimportovat certifikáty autorit do úložišť 🙂 Samozřejmě existují i jednodušší postupy (např. pro IIS), nicméně to na serveru nemusí být vždy k dispozici a tento univerzální postup mi přijde nejvhodnější, a vystavování nových certifikátů již naštěstí není tak komplikované.

7/ Automatizace – nástřel skriptu

Velice jednoduchá a chyby neošetřující skript pro vystavení nových certifikátů je k dispozici na Let’s Encrypt na Windows Server 2016 – PowerShell a ACMESharp #2 – skript PoC

Doporučná perioda vystavování je 60 dnů, takže stačí nastavit Task Scheduler na každé dva měsíce a máme vystaráno (samozřejmě dokud se něco nezmění na straně LE).

6/ Textové poznámky

7/ Odkazy

https://github.com/ebekker/ACMESharp/wiki/Quick-Start

https://www.powershellgallery.com/packages/ACMESharp/0.8.1

Dlouhé řetězce v certifikátech

Microsofí CA omezuje délku řetězců ve vystavených certifikátech (64 znaků podle CCITT) a nepovolí certikát vystavit.

To je celkem opruz při složité struktuře OU nebo prapodivných jménech např. u Code Signing certifikátů.

Kontrola lze vypnout přes

certutil -setreg ca\EnforceX500NameLengths 0

Původní stav pak přes

certutil -setreg ca\EnforceX500NameLengths 1

Používáme cookies. Další informace

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close