Ako podpisovať aplikácie na Windows (SDK)
Poďme sa spoločne pozrieť na podpisanie 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 software Development Kit (SDK) for Windows 10 .
Získanie PFX súboru
Pre podpis aplikácií potrebujete už spomínaný PFX súbor, alebo certifikát v úložisku certifikátov Windows. Aj pre import certifikátu do úložiska je možné použiť formát PFX (pri importe odporúčame neumožniť export privátneho kľúča). Ak by ste používali certifikát uložený v úložisku certifikátov systému, odporúčame si uložiť aj jeho zálohu práve v PFX formáte.
Určite sa pýtate, ako PFX súbor vytvoriť. Možností je viac.
- Môžete využiť IIS, ktoré je súčasťou Windows, a môžete si v IIS vytvoriť žiadosť o certifikát a po jeho vystavení žiadosť dokončiť a certifikát exportovať do PFX.
- Druhou možnosťou je vytvorenie kľúčov a následne vytvorenie PFX súboru v OpenSSL OpenSSL je súčasťou všetkých linuxových distribúcií, ale je možné program použiť aj na Windows v podobe GnuWin alebo Win32OpenSSL , čo sú pre Windows skompilované OpenSSL . To urobíte nasledujúcimi príkazmi:
openssl genrsa -out privatny-kluc.key 3072
openssl req -New -key privatny-kluc.key -out nazov.csr
CSR vložíte do objednávky certifikátu. Po jeho vystavení si ho uložte a z privátneho kľúča, certifikátu a certifikátu CA vytvorte PFX súbor.
Pred vytvorením PFX je potreba previesť súbor P7B s certifikátmi CA do textového formátu. Certifikáty CA musí v PFX súboru byť, inak nebude podpis dôveryhodný!
openssl pkcs7 -print_certs -in windows_intermediate.p7b -out CAcert.cer
Potom v OpenSSL všetko zlúčite do PFX súboru.
openssl pkcs12 -export -in cert.crt -certfile CAcert.cer -inkey key.pem -out výstup.pfx
- Tretia - užívateľsky najpríjemnejšia možnosť - je použitie grafického programu XCA . V ňom si vytvoríte žiadosť o certifikát, privátny kľúč, po vystavení certifikát importujete a vykonáte export všetkých kľúčov do súboru PFX.
Pokiaľ si na vytvorenie PFX netrúfnete alebo sa nedarí, môžete požiadať podporu SSLmarketu , ktorá vám pre objednaný certifikát PFX súbor vytvorí.
Použitie Signtool
Signtool.exe je program, ktorý podpisuje aplikácie s použitím PFX s Code Signing certifikátom. Po nainštalovaní Windows SDK ho použite cez príkazový riadok. Pre podpisovanie aplikácií musíte poznať základné parametre, aby ste mohli správne zavolať podpísanie aplikácie sa správnym certifikátom a nastavením.
Podpisovanie skutočne prebieha cez príkazový riadok a certifikát stačí mať uložený v súbore v 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ť 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
- /fd - špecifikuje hash algoritmus podpisu. Predvolené je SHA-1, ktoré však nebude dôveryhodné, preto je potrebné použiť SHA256, teda /fd SHA256 .
- /p Password - zadanie hesla, pokiaľ podpisujete s PFX.
- /s StoreName - ak používate úložisko certifikátov, bližšie určí, 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.
Kompletnú dokumentáciu nájdete na webu Microsoftu alebo po zadaní príkazu " signtool sign /?" .
Celý príkaz podpísania súboru potom môže vyzerať napríklad takto: p>
SignTool sign /f MyCert.pfx /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ť znova spätne podpisovať staršie aplikácie (typicky po dvoch rokoch expirácie Code Signing certifikátu), aby neboli nedôveryhodné. Ak v čase 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. Najčastejším spôsobom použitia je uloženie PFX certifikátu ako súboru do počítača a následné odkazovanie na tento súbor. Tento princíp je praktický, avšak nie je vôbec bezpeč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. Príklad podpise s PFX súborom je uvedený vyššie.
Druhým spôsobom je uloženie certifikátu v úložisku systému a následné volanie podľa subjektu v certifikáte. Táto metóda je o niečo bezpečnejšie za predpokladu, že zakážete export privátneho kľúča certifikátu. Bez privátneho kľúča je certifikát na nič a exportovať ho zo systému nie je možné. Podpis s použitím úložiska potom vyžaduje parameter /n:SubjectName:
signtool sign /n "My Company Certificate" /t http://timestamp.digicert.com C:test.exe
Treti a najbezpečnejším spôsobom je uloženie certifikátov na tokene alebo bezpečnom úložisku . Token využívajú EV certifikáty Code Signing, ktoré výrazne odporúčame. Majiteľ certifikátu ho má v bezpečí, z tokenu nie je možné certifikát exportovať a pri niekoľkonásobnom zadaní zlého hesla sa certifikát z tokenu zmaže. Code Signing EV certifikát má okrem spomínanej bezpečnosti použitia aj zásadnú výhodu z pohľadu dôveryhodnosti; viac sa o tom dočítate v samostatnom článku.Podpis s certifikátom uloženým na tokenu vyžaduje parameter /s my: StoreName, v tomto případě úložisko My:
signtool sign /s My /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: pracetest.exe
Jednoduchšie kontrolu možno 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.