dolezel.net

Co není v hlavě, je v blogu...

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…

IIS_SHA256

Hurá, další obrazovka je bez problémů Smile

IIS_SHA256_2

Teď je třeba zvolit “Proceed without enrollment policy”.

IIS_SHA256_3

Další obrazovka je zase v pohodě, Next.

IIS_SHA256_4

Zato následující okno stojí za to. Je třeba klepnout na šipečku směřující dolů.

IIS_SHA256_5

Jedině tak bude totiž vidět magické tlačítko Properties.

IIS_SHA256_6

Teď si vcelku běžným způsobem vyplním vlastnosti certifikátu, nejprve Friendly name.

IIS_SHA256_7

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.

IIS_SHA256_8

Na co je ale potřeba dát extra pozor, jsou rozbalovací roletky na záložce Private Key.

IIS_SHA256_9

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.

IIS_SHA256_10

A ejhle, to je to správné místo, kde je třeba vyměnit SHA1 za SHA256.

IIS_SHA256_11

Tím jsem dokončil nastavení základních parametrů, klepnu na OK a následně na Next.

IIS_SHA256_12

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.

IIS_SHA256_13

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.

IIS_SHA256_14

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.

IIS_SHA256_15

Zvolím Complete Certificate Request…

IIS_SHA256_16

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.

IIS_SHA256_17

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.

IIS_SHA256_18

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…

Pro tisk

Komentáře (2) -

  • AD

    4. 11. 2015 10:48:22 |

    Osobně doporučuji: https://www.openssl.org/community/binaries.html - openssl nemusí běžet jen na linuxu.

    Je to mnohem přímější, jednodušší a univerzálnější nástroj, než m$ nástroje pro práci s certifikáty.
    Lze snadno vygenerovat klíč požadované velikosti, žádost, poslat ji, překovertovat výsledný certifikát do pfx a hurá s ním do windows. Jen pro použití v IIS je třeba při importu označit klíč jako exportovatelný.

    S použitím openssl jsou všechny klíče, žádosti i certifikáty uložné pěkně v souborech, které lze dobře uschovat. Prosté a jednoduché.

    Ono totiž stačí, když se v síti používá m$ enterprise autorita, i s ní si člověk užije vrchovatě a nelze ji snadno nahradit službami openssl - tak nač si přidělávat práci v tak prostém případku, jako je web certifikát...

    • Radek

      22. 11. 2015 1:14:56 |

      OpenSSL znám, ale to je taky dílo. Každý modul musel dělat někdo jiný. Jinak si nedokážu vysvětlit naprosto rozdílné parametry a logiku práce.Asi nemá cenu zmiňovat, že zrovna v posledních měsících je OpenSSL věc, která se patchuje každou chvíli.
      S konverzí z/do PFX jsem si taky užil, ostatně proto jsem si na tomto blogu udělal dost poznámek. Ale hlavně jsou situace, kdy jsem na serveru zákazníka, nesmím mu tam nic instalovat (ani Portable), soukromý klíč nesmí opustit server, takže pak nic jiného než nativní nástroje nepřichází v úvahu.

Komentáře jsou uzavřeny