IIS a SHA256 certifikát
Vypršel mi StartSSL certifikát, tak jsem si před obnovou řekl, že už je na čase obměnit SHA1 za SHA256. No jo, jenže IIS Manager ve Windows Serveru 2012 R2 vyrobí CSR automaticky jen s SHA1. Tak dobrá, nahodím mmc.exe, přidám si Certificates snap-in a holt ten požadavek vyrobím ručně. V tu chvíli jsem netušil, jakou zábavu jsem si připravil pro pár hodin v průběhu několika dalších dní.
Úvodem jsem dal Request New Certificate…. Špatně, správně je nutné zvolit Advanced Operations a následně Create Custom Request…
Hurá, další obrazovka je bez problémů
Teď je třeba zvolit “Proceed without enrollment policy”.
Další obrazovka je zase v pohodě, Next.
Zato následující okno stojí za to. Je třeba klepnout na šipečku směřující dolů.
Jedině tak bude totiž vidět magické tlačítko Properties.
Teď si vcelku běžným způsobem vyplním vlastnosti certifikátu, nejprve Friendly name.
Následně CN, O, OU, L, CZ. U StartSSL je to stejně docela jedno, oni si to ve výsledném certifikátu stejně vše přepíšou.
Na co je ale potřeba dát extra pozor, jsou rozbalovací roletky na záložce Private Key.
Nechci velikost klíče 1024, nýbrž minimálně 2048. Navíc chci mít klíč exportovatelný (což se ukáže jako velmi důležité v dalším kroku). Následně rozbalím Select Hash Algorithm.
A ejhle, to je to správné místo, kde je třeba vyměnit SHA1 za SHA256.
Tím jsem dokončil nastavení základních parametrů, klepnu na OK a následně na Next.
CA není dostupná online, takže uložím do souboru a hlavně zvolím Base 64 pro snazší kopírování přes clipboard v dalším kroku.
Po stisknutí tlačítka Finish můžu zkontrolovat, že v Certificate Enrollment Requests se nachází privátní klíč, z nějž byl odvozen certifikační požadavek. V případě, kdy se jedná o důležitý certifikát nebo odezva od externí CA může chvíli trvat, je doporučeno tento privátní klíč zazálohovat do PFX a zkopírovat na bezpečné místo.
V následujícím kroku, který zde nedokumentuji, jsem certifikační požadavek zadal do StartSSL CA a získal zpět podepsanou odpověď. No jo, jenže co teď? Co s tím souborem? Rozhodl jsem se zkusit stejný postup, jako kdyby šlo o SHA1 certifikát, který bych začal generovat v IIS Manageru.
Zvolím Complete Certificate Request…
Nyní odkážu na soubor potvrzený certifikační autoritou. Chtěl bych použít SNI, takže jsem zkusil zadat “Web Hosting”, ale to mi vyhodilo chybu, kterou jsem si ani nepoznamenal. Vrátil jsem se o krok zpět a zvolil Personal.
Výborně, ono to prošlo. V úložišti Personal je nový certifikát. Poklepám na něj – a kruci, on není spárovaný s privátním klíčem. Následovalo docela dlouhé bádání, co s tím. Nakonec pomohl návod v Entrust KB. Zobrazil jsem si nově vystavený certifikát, poznamenal jeho Serial number a v administrátorském příkazovém řádku zadal toto:
certutil -repairstore my 06848146975c7e
Vypsalo to řadu parametrů a na konci tuto nadějnou hlášku:
CertUtil: -repairstore command completed successfully.
Musel jsem obnovit celý Certificates snap-in, ale po dvojkliku na certifikát vidím, že již mám k dispozici certifikát i s privátním klíčem.
Jelikož byl ten postup krapet kostrbatý, je třeba dořešit pár drobností. Zaprvé, Certificate Enrollment Request nebyl smazán. Nyní je bezpečné jej smáznout. Zadruhé, chci využít SNI, takže úložiště Personal je mi k ničemu. Certifikát totiž potřebuji ve větvi Web Hosting. Zaplať pánbůh, že jsem zvolil volbu povolující export privátního klíče. Jednak můžu certifikát zazálohovat do PFX a opět odkopírovat na bezpečné místo. No a hlavně můžu certifikát naimportovat do větve Web Hosting a smáznout v Personal.
Nevím, zdali a kde jsem udělal nějakou chybu, každopádně si příště docela rozmyslím, jestli si budu generovat vlastní SHA256 certifikační požadavek nebo se spolehnu na možnosti StartSSL CA, která mi v Control Panelu nabízí možnost vygenerování privátního i veřejného klíče. Můj postup je principielně bezpečnější, navíc zrovna Windows nejsou kamarád s PEM klíči a musel bych vytvářet PFX přes OpenSSL. Na druhou stranu, celý zde dokumentovaný postup je také příšerný –. a to je hlavním důvodem, proč jsem tenhle post vytvořil – za měsíc už nebudu tušit, jak jsem ten certifikát vyrobil…