Ako podpisovať aplikácie na Windows (SDK)

Poďme sa spoločne pozrieť na podpis aplikácie na Windows pomocou Windows SDK (nástroje 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 Softvér Development Kit (SDK) pre Windows 10.

Použitie Signtool

Signtool.exe je program, ktorý podpisuje aplikácia Code Signing certifikátom. Po nainštalovaní Windows SDK ho použite cez príkazový riadok. Na podpisovanie aplikácií musíte poznať základné parametre, aby ste mohli správne zavolať podpísanie 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).

Ukážka podpisovania so signtool.exe
Ukážka podpisovania so signtool.exe

Základné parametre (príkazy) pre podpis sú tieto:

signtool príkaz /parameter

Z príkazom využijete Sign pre podpis a Verify pre overenie podpisu súboru. Timestamp je príkaz na vloženie časovej pečiatky, ale to môžete urobiť rovno pri podpisovaní súboru.

Užitočné parametre:

  • /f SignCertFile – ak používate 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 – ak používate úložisko certifikátov (napríklad na tokene), upresní, ktoré sa má použiť. Predvolené 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 zadanie príkazu „signtool sign /?“.

Celý príkaz podpísania 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. Zaistí podpísanú aplikáciu dôveryhodnosť aj po expirácii certifikátu, ktorý bol pre podpis použitý. To je veľmi dôležité, pretože nebudete musieť znovu spätne podpisovať staršie aplikácie (typicky po dvoch rokoch expirácie Code Signing certifikátu), aby neboli nedôveryhodné. Pokiaľ v okamihu podpisu použijete timestamp a certifikát bude platný, bude aj 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 (vo viacerých ú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 alebo 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ý sa nedá z tokenu exportovať, je certifikát k ničomu a jeho zneužitie tak nie je možné; pri päťkrát zle 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ť predvolené ú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

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 je možné 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.

Detail podpisu aplikácie v prieskumníkovi windows
Detail podpisu aplikácie v prieskumníkovi Windows
Bol tento článok pre vás užitočný?