Pokud se někdo zaobíral code signing certifikáty pro podepisování Microsoft kódu, možná ví, že certifikační autority dodávají .SPC soubor. Na Windows XP/2003 je ještě před vlastní žádostí vytvořen .PVK soubor, jenž obsahuje privátní klíč. Na Windows Vista/W2008 Serveru je privátní klíč uložen v registry a kupříkladu s Thawte certifikátem není možné certifikát zazálohova, přenést na jiný stroj… Předpokládejme tedy, že o certifikát bylo zažádáno na WXP či W2003. Co dělat dál po obdržení SPC souboru od certifikační autority?
Další postup se liší podle programů, které má člověk k dispozici.
1) SDK a pvk2pfx.exe
Součástí Visual Studia v obrovském balíku Windows Platform SDK je soubor pvk2pfx.exe, který umí z PVK a SPC vyrobit PFX. Syntaxe je následující:
pvk2pfx -pvk mujpvksoubor.pvk -pi mojeheslokpvk -spc mujspcsoubor.spc -pfx mujpfxsoubor.pfx –f
Tato utilita je dostupná též ve Windows Server 2003 Platform SDK a SDK for Windows Vista, vše je to ale strašně obrovské pro instalaci.
2) pvkimport.exe
Microsoft utilita z roku 1999, původně určená pro podepisování VBA kódu, pomůže i v případě převodu na PFX. Stáhnout se dá zde. Funguje od Windows 2000 až po Vista/W2008. Syntaxe je následující:
pvkimport.exe –PFX mujspcsoubor.spc mujpvksoubor.pvk
V prvním kroku budu dotázán na heslo k privátnímu klíči. Pak odklepu pár dialogů, zvolím, že chci exportovat včetně privátního klíče a posléze se objeví známé okno pro zadání hesla k PFX souboru. Tím je převod do PFX dokončen.
Vlastní podepisování kódu je za hranicí tohoto článku, nicméně dobrý nástroj je třeba tento - http://www.tech-pro.net/codesign.html. Programátorům by se pak mohl hodit tento odkaz.
Převod z PFX na pár PVK+SPC nebude dle mého názoru tak častý, ale hodí se mít po ruce poznámku, jak na to. Základem je nainstalované OpenSSL. Následně si musím vytáhnout z PFX souboru privátní klíč.
openssl.exe pkcs12 –in mujpfxsoubor.pfx –nocerts –nodes –out mujpemklic.pem
Bohužel .PVK není v OpenSSL přímo podporováno, jedná se o MS proprietární řešení. Existuje však konverzní utilita, která dokáže převést PEM na PVK. Tato utilita se stáhne zde a příkaz vypadá následovně:
pvk.exe –in mujpemklic.pem –topvk –strong –out mujpvksoubor.pvk
Tím by byl připraven PVK soubor a je nutné ještě vyrobit soubor SPC. Ten se musí zkonvertovat opět pomocí OpenSSL, ale tentokrát ve dvou krocích:
openssl.exe pkcs12 –in mujpfxsoubor.pfx –nokeys –out mujpemsoubor.pem
openssl.exe crl2pkcs7 –nocrl –certfile mujpemsoubor.pem –outform DER –out mujspcsoubor.spc
Tím je připraven i SPC soubor.