Ako podpisovať aplikácie na Windows (SDK)
Pozrime sa spoločne na podpisovanie aplikácie na Windows pomocou Windows SDK (nástroja signtool) a Code Signing certifikátu. Návod predpokladá pripravený Code Signing certifikát v PFX a nainštalované vývojové prostredie Windows SDK na operačnom systéme Windows. SDK si stiahnite z webu Microsoftu pre príslušnú verziu vašich Windows, napríklad Windows Software Development Kit (SDK) for Windows 10.
Použitie Signtool
Signtool.exe je program, ktorý podpisuje aplikácie Code Signing certifikátom. Po nainštalovaní Windows SDK ho použijete cez príkazový riadok. Pre podpisovanie aplikácií musíte poznať základné parametre, aby ste mohli správne zavolať podpis aplikácie so správnym certifikátom a nastavením.
Podpisovanie skutočne prebieha cez príkazový riadok a certifikát stačí mať k dispozícii na danom počítači (nikam sa neinštaluje).

Základné parametre (príkazy) pre podpis sú tieto:
signtool príkaz /parameter
Z príkazov využijete Sign pre podpis a Verify pre overenie podpisu súboru. Timestamp je príkaz pre vloženie časovej pečiatky, ale to môžete urobiť hneď pri podpisovaní súboru.
Užitočné parametre:
- /f SignCertFile – používate-li pre podpis PFX súbor, tento príkaz odkazuje na jeho umiestnenie. Získať Code Signing certifikát v PFX už nie je možné.
- /s StoreName – používate-li úložisko certifikátov (napríklad na tokene), upresní, ktoré sa má použiť. Výchozí je My.
- /t URL – pridá časovú pečiatku a odkaz na ňu. URL timestamp serverov nájdete nižšie.
- /td - algoritmus odtlačku (digest) v časovej pečiatke. Zvoľte minimálne parameter sha256 alebo vyšší.
- /fd - algoritmus odtlačku (digest). Zvoľte minimálne parameter sha256 alebo vyšší.
Kompletnú dokumentáciu nájdete na webe Microsoftu alebo po zadaní príkazu „signtool sign /?“.
Celý príkaz podpisu súboru potom môže vyzerať napríklad takto:
SignTool sign /n "My Company Certificate" /td sha256 /fd sha256 /t http://timestamp.digicert.com C:\test.exe
Vždy používajte timestamp, čiže časovú pečiatku. Zabezpečí podpísanej aplikácii dôveryhodnosť aj po exspirácii certifikátu, ktorý bol pre podpis použitý. To je veľmi dôležité, pretože nebudete musieť znova spätne podpisovať staršie aplikácie (typicky po dvoch rokoch exspirácie Code Signing certifikátu), aby neboli nedôveryhodné. Ak v momente podpisu použijete timestamp a certifikát bude platný, bude i aplikácia v budúcnosti platná.
Serverov poskytujúcich časové pečiatky je viac; odporúčam používať timestamp server DigiCertu: http://timestamp.digicert.com/
Tento server nemá žiadny web na porte 80, takže je zbytočné ho navštevovať prehliadačom (nič neuvidíte).
Úložisko certifikátov
Certifikát môže byť uložený na viacerých miestach (v rôznych úložiskách) a môžete si ho „zavolať“ viacerými spôsobmi. Predtým bolo možné uložiť certifikát ako súbor PFX, ale to už nie je možné. PFX súbor vám môže ktokoľvek ukradnúť a hoci je PFX chránené heslom, jedná sa o veľké bezpečnostné riziko (heslá navyše často bývajú veľmi slabé). PFX sa hodí najmä na zálohy certifikátu S/MIME či pre web.
Bežným spôsobom uloženia certifikátu Code signing je uloženie na token a následné volanie podľa subjektu v certifikáte. Táto metóda je bezpečná a prakticky rovnaká ako predchádzajúce podpisovanie s PFX. Bez privátneho kľúča, ktorý nejde z tokenu exportovať, je certifikát k ničomu a jeho zneužitie tak nie je možné; pri päťkrát nesprávne zadanom hesle sa token zablokuje.
Podpis s použitím úložiska potom vyžaduje parameter /n SubjectName:
signtool sign /n "My Company Certificate" /td sha256 /fd sha256 /t http://timestamp.digicert.com C:\test.exe
Alebo môžete zvoliť výchozí úložisko My a podpisujúci SW certifikát automaticky nájde sám:
signtool sign /s My /td sha256 /fd sha256 /t http://timestamp.digicert.com C:\test.exe
Automatizácia Code Signing pomocou cloud HSM
Automatizácia podpisovania kódu je veľmi žiadaná, s certifikátom na tokene však nejde automaticky podpisovať; nemôžete ho využiť ani na serveri. Našťastie poznáme služby, ktoré sú pre automatizáciu podpisovania vhodné. DigiCert ponúka službu KeyLocker, príp Software Trust Manager. Podpisové kľúče môžete tiež mať v cloudovom HSM v Azure či Google Cloude.
Viac informácií o možnostiach automatizácie podpisovania kódu nájdete v článku Code Signing Centrum.
Kontrola podpisu
Teraz už viete podpisovať a vašu aplikáciu ste opatrili prvým dôveryhodným podpisom. Určite vás teraz zaujíma, ako podpis skontrolovať.
Kontrola je možná jednak pomocou nástroja signtool:
signtool verify C:\test.exe
Jednoduchšie možno kontrolu vykonať zobrazením vlastností súboru v prieskumníkovi Windows. Detail podpisu môžete „rozpitvať“ až na samotný detail použitého certifikátu.

Mrzí nás, že ste tu nenašli potrebné.
Pomôžete nám článok vylepšiť? Napíš nám, čo ste tu očakávali a nedozvedeli sa.