Authenticode

Máte-li už certifikát pro podpis kódu od CAcert, pak se můžete rozhodnout, že když už jste ho cestou importovali do prohlížeče, pak můžete získat jenom soubor .p12 (z prohlížeče Mozilla/Firefox) nebo .pfx (z prohlížeče Internet Explorer). Takové soubory jsou kontejnery se strukturou PKCS#12. Soubor obsahuje Váš privátní klíč a obvyklý certifikát (s veřejným klíčem). Většina programů však vyžaduje soubory .pvk a .p7b nebo .spc, aby mohly digitálně podepsat soubor pomocí Authenticode.

Tato stránka popisuje, jak můžete rozebrat kontejnerový soubor .p12 | .pfx na jednotlivé soubory .pvk a .p7b | .spc pro použití s Authenticode. Ochraňujte tyto soubory. Hlavní problém souborů .pvk je ten, že klíč zde není chráněn heslem. Jastliže jste si však někdy objednal(a) certifikát pro podpis kódu od Thawte, pak víte, že jste dostal(a) dva soubory.

Tento návod je psán se zaměřením na uživatele Windows a z jejich perspektivy. Uživatelé Linuxu nechť laskavě zamění příkazy DOS za příkazy jakéhokoli shellu (řádkového interpretu příkazů), který běžně používají. Tyto instrukce budou platit i pro ně.

Požadované soubory

Pro tyto kroky budete potřebovat soubory:

Doporučuji OpenSSL verze 0.9.7 nebo vyšší. Uživatelé systémů Linux a Unix by měli použít openssl instalovaný v systému nebo dostupný jako balíček (package). Pro uživatele Windows můžete získat instalační soubor OpenSSL, který ho za Vás nainstaluje.

Program pvktool pro převod z formátu PEM do PVK. Je dostupný pro různé platformy z těchto odkazů. Všechny RPM (balíčky) jsou podepsány PGP klíčem patřícím Jacco de Leeuw.

Komprimovaný pvktool.zip - PVK pro Win32. Z domovské stránky PVK - Steven Henson
Následující odkazy jdou na vlastní web původního autora.
pvktool.zip - PVK pro Win32
pvk-0.12-3jdl.src.rpm - Zdrojový RPM (podržte přemyk [shift] při kliknutí na odkaz)
pvk-0.12-3jdl.i386.rpm - Fedora Core 4 binární (podržte přemyk [shift] při kliknutí na odkaz)
pvk-0.12-3jdl.i386.rpm - Red Hat 8.0 binární RPM (podržte přemyk [shift] při kliknutí na odkaz)
pvk-0.12-3jdl.i586.rpm - Mandrake 10.0 binární RPM (podržte přemyk [shift] při kliknutí na odkaz)
pvk-0.12-3jdl.i586.rpm - Mandrake 9.2 binární RPM (podržte přemyk [shift] při kliknutí na odkaz)
pvk-0.12-3jdl.i586.rpm - Mandrake 9.1 binární RPM (podržte přemyk [shift] při kliknutí na odkaz)

Od OpenSSL verze 0.9.9 nebude patrně už této utility zapotřebí. Řekli mi, že podpora exportu PVK bude už součástí této verze. Toto wiki bude aktualizováno, jakmile bude dostupná.

Krok 1: Extrakce z PKCS#12

Windows instalátor standardně umístí openssl do C:\OPENSSL, takže doporučuji aktualizovat cesty příkazem path a přidat adresář k nim. Pokud jste uložili OpenSSL jinam, změňte "path" příslušně. Zde je příklad.

set PATH=%PATH%;C:\OPENSSL\BIN

[PATH platí pro okno "DOSu" - fakticky jen černého okna příkazového řádku. Ve Windows linie 2000 a XP až 8 resp. serverů 2000 až 2012 je PATH systému v: Tento počítač - vlastnosti - Upřesnit - tl. Proměnné prostředí.]

Soubory typu PKCS#12 mají často příponu .p12 nebo .pfx. A tak předpokládejme, že Váš soubor PKCS#12 se nazývá user.pfx. V tomto návodu ovšem zaměňte user.pfx skutečným názvem svého souboru typu PKCS#12. Pak otevřete "okno DOS" a proveďte tyto příkazy (řádky začínající '#' jsou vysvětlivky, ty nezadávejte):

# (Tip: na tyto příkazy použijte kopii [Ctrl-C] a vložení [Ctrl-V])
#
# Extrahujte uživatelský certifikát ze souboru typu PKCS#12:
openssl pkcs12 -in user.pfx -nokeys -clcerts -out usercrt.pem

# Extrahujte certifikát(y) CA obsažené v souboru typu PKCS#12:
openssl pkcs12 -in user.pfx -nokeys -cacerts -out cacrt.pem

# Extrahujte privátní klíč obsažený v souboru typu PKCS#12:
openssl pkcs12 -in user.pfx -nocerts -nodes -out userkey.pem

/!\ Výsledný soubor userkey.pem NENÍ zašifrován! Nenechte ho v systému souborů, jakmile ho už nebude třeba!

Krok 2: Konverze z PEM

Pro tuto etapu předpokládám, že máte tři soubory PEM, nazvané userkey.pem (privátní klíč), usercrt.pem (uživatelský certifikát) a cacrt.pem (certifikát(y) CA). Privátní klíč bude muset být konvertován na PVK, vlastní formát Microsoftu. Certifikáty budou konvertovány do PKCS#7. Ke konverzi PVK budete potřebovat utilitu pvktool od dr. Stephena N. Hensona, který je členem týmu OpenSSL. Je to on, kdo "rozkódoval" formát PVK. Zdrojový kód pro Unix/Linux a verze pro Windows programu PVK jsou dostupné na jeho informační stránce o PVK.

Tři soubory PEM (usercrt.pem, cacrt.pem, userkey.pem) převedeme do prozatímních souborů žádaných formátů těmito příkazy OpenSSL:

# Soubory certifikátů na tvar PKCS#7 (.p7b):
# (Poznámka: druhé klíčové slovo je crl2pkcs7 a ne cr12pkcs7. Třetí písmeno je "malé L" a ne číslice "1".)
openssl crl2pkcs7 -certfile usercrt.pem -certfile cacrt.pem -nocrl -outform PEM -out usercrt.p7b

# Privátní klíč z PEM do tvaru  a formátu Microsoft PVK (.pvk)
# (použitím utility pvktool zmíněné výše).
pvk -in userkey.pem -topvk -nocrypt -out userkey.pvk

/!\ Výsledný soubor userkey.pvk NENÍ zašifrován! Nenechte ho v systému souborů, jakmile ho už nebude třeba!

Dokončení

Je hotovo. Všechno je dokončeno. Nyní můžete tyto dva soubory (userkey.pvk a usercrt.p7b) použít v jakékoli aplikaci, přímo podporující Authenticode. Bylo to otestováno v balíčku "Installshield Package" pro web (můžete-li to najít).

Protože soubory userkey.pem, cacrt.pem a usercrt.pemuž nejsou potřebné, můžete je nyní smazat. Zvláště ten první.

Poděkování

Tento návod byl převzat z http://www.jacco2.dds.nl/networking/crtimprt.html s povolením Jacco de Leeuw. Je zpracován podle sekce 5 uvedené stránky.