Windows juhend: Kuidas digiallkirjastada allkirjastamata draivereid

From EIK wiki

Draiverite allkirjastamine Windows 7 x64 näitel.

Sissejuhatus

Kuna kõik uuemad Windowsid nõuavad signeeritud draivereid, siis on vaja leida lahendus ka Ettevõtte piires kasutatavata, mitte signeeritud draiverite allkirjastamiseks. Selleks on õnneks Microsoftil kõik vahendid olemas.

Vajalikud vahendid

Alustuseks tõmbame alljärgnevad paketid ja installeerime need:

1. Windows Driver Frameworks (WDF) Ms lehelt. Ca 30MB
http://msdn.microsoft.com/en-US/windows/hardware/br259104
2. Windows Driver Kit (WDK), ca 1GB.
http://www.microsoft.com/en-us/download/details.aspx?id=11800
3. Microsoft Windows SDK for Windows 7 and .NET Framework 4
http://www.microsoft.com/en-us/download/details.aspx?id=8279
Vajalikud Failid asuvad: C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin


Vajalikud programmid/failid: (leiab eelnevalt installeeritud pakettidest):

Inf2Cat.exe (signeerimata Catalog faili genereerimiseks sinu INF)
Samast kataloogist kus asub Inf2Cat.exe läheb vaja veel:
WindowsProtectedFiles.xml
Microsoft.Whos.Shared.IO.Cabinets.dll
Microsoft.Whos.Shared.IO.Catalogs.dll
Microsoft.Whos.Shared.Xml.InfReader.dll
Microsoft.Whos.Winqual.Submissions.SubmissionBuilder.dll
Microsoft.Whos.Xml.NonXmlDataReader.dll


Makecert.exe (Sertifikaadi genereerimiseks)
Cert2spc.exe (Tarkvara publitseerija cerdi tegemiseks, Software Publisher's Certificate (SPC))
pvk2pfx.exe (PFX faili loomiseks)
Signtool.Exe (Catalog faili digitaalseks signeerimiseks)
Certmgr.exe (Sertifikaateide kustutamiseks lisamiseks)


Siin näites koondasin kõik vajalikud failid kataloogi nimega „C:\driveri_allkirjastamine“. Kui kõik tööriistad koos, võtsin suvalise win98 driveri millega katsetada. Draiveri failid tõstisn kataloogi: „C:\driveri_allkirjastamine\driver“.

Draiveri kataloogis peab olema vähemalt sellised draiveri failid mida hakkame signeerima:

driver.inf
driver.sys
driver.dll

Loome .cat (catalog) faili draiverist.

Avame .inf faili tekst editoris ja vaatame, et seal oleks määratud sektsiooni [version] all .cat fail. Kui seda pole, siis lisame rea:

[version]

Signature=xxxxxx

Provider=xxxxxx

CatalogFile.NTx86=testdriver.cat

Kus „testdriver.cat“ on faili nimi mille tahame genereerida. Kui seda rida ei lisa, tuleb järgmise käsu juures error: "error 22.9.4 - Missing 32-bit catalog file entry".

Command line:

Inf2Cat.exe /driver:"<Path to folder containing driver files>" /os:XP_X86 

Käivitasime käsu:

C:\driveri_allkirjastamine>Inf2Cat.exe /driver:"C:\driveri_allkirjastamine\driver" /os:7_X86

Saime testdriver.cat faili turbekataloogi:
Wiki kuidas allkirjastada allkirjastamata driveritimage001.jpg
Wiki kuidas allkirjastada allkirjastamata driveritimage002.jpg

Turbekataloog testdriver.cat sisu:
Wiki kuidas allkirjastada allkirjastamata driveritimage003.jpg
Nagu näha pole see turbekataloog signeeritud.  

Loome sertifikaadi ja privaat võtme.

Loome nö testfirma 'c:\PlaneteersLtd_certificate'. See on koht kuhu loome customer-specific sertifikaadi. Seda serti saame korduvalt kasutada oma testfirmas draiverite allkirjastamiseks.

Command line:MakeCert.Exe -r -pe <path to .cer file you want to generate> -n CN=<certificate name> -sv <path to .pvk file you want to generate> -len 2048 
Näidis: makecert.exe -r -pe "c:\PlaneteersLtd_certificate\PlaneteersLtd.cer" -n CN="Planeteers Ltd" -sv "c:\PlaneteersLtd_certificate\PlaneteersLtd.pvk" -len 2048


Wiki kuidas allkirjastada allkirjastamata driverit.jpg

See käsk loob privaat võtme, mille peab sisestama. Soovitav on see ülesse märkida! Sisestame parooli (näites on selleks: test):
Wiki kuidas allkirjastada allkirjastamata driveritimage005.jpg
Image00wiki kuidas allkirjastada allkirjastamata driverit6.jpg
Wiki kuidas allkirjastada allkirjastamata driveritimage007.jpg


Sellega luuakse: c:\PlaneteersLtd_certificate\PlaneteersLtd.cer ja c:\PlaneteersLtd_certificate\PlaneteersLtd.pvk

Loome tarkvara Publisher'i sertifikaadi (SPC) meie loodud sertifikaadist

Command Line:Cert2Spc.Exe <path to .cer file> <path to .spc file> Näidis: cert2spc.exe "c:\PlaneteersLtd_certificate\PlaneteersLtd.cer" "c:\PlaneteersLtd_certificate\PlaneteersLtd.spc"

Sellega saime faili:“c:\PlaneteersLtd_certificate\PlaneteersLtd.spc" Loome PFX faili programmiga pvk2pfx.exe


pvk2pfx.exe Kasutamine:

   pvk2pfx -pvk <pvk-file> [-pi <pvk-pswd>] -spc <spc-file> [-pfx <pfx-file> [-po <pfx-pswd>] [-f]]
       -pvk <pvk-file>  - input PVK file name.
       -spc <spc-file>  - input SPC file name.
       -pfx <pfx-file>  - output PFX file name.
       -pi <pvk-pswd>  - PVK password.
       -po <pfx-pswd>  - PFX password; same as -pi if not given.
       -f              - force overwrite existing PFX file.


Kui -pfx võtit ei lisa, siis viskab export viisardi ette ja sellisel juhul, options -po ja -f ei arvestata.


Näidis:

pvk2pfx.exe -pvk "c:\PlaneteersLtd_certificate\PlaneteersLtd.pvk" -spc "c:\PlaneteersLtd_certificate\PlaneteersLtd.spc" -pi <private key password>

Wiki kuidas allkirjastada allkirjastamata driveritimage008.jpg

Nüüd saame programmiga signtool.exe signeerida catalog faili.

Signeerime/allkirjastame catalog faili

Näidis:

signtool.exe sign /f "c:\PlaneteersLtd_certificate\PlaneteersLtd.pfx" /p <password> /t http://timestamp.verisign.com/scripts.timstamp.dll "C:\ driveri_allkirjastamine\driver\testdriver.cat"


Wiki kuidas allkirjastada allkirjastamata driveritimage009.jpg

Lisame loodud serdi usaldusväärsete sertide alla

Lisame Loodud serdi „c:\PlaneteersLtd_certificate\ PlaneteersLtd.cer“
CertMgr.exe –ga usaldusväärsete juur sertide alla.

Nüüd on meil signeeritud ja turvaline draiver. Et ka teistes arvutites saaks seda turvaliselt kasutada, peab olema installeerimise ajal lisatud turvaliste sertide alla PlaneteersLtd.cer -sertifikaat.

Signeeritud draiveri info:
Wiki kuidas allkirjastada allkirjastamata driveritimage010.jpg
Wiki kuidas allkirjastada allkirjastamata driveritimage011.jpg

Kokkuvõtte:

Sellised serditud draiverid on mõeldud firma siseseks kasutamiseks ja testimiseks. Muul otstarbel tuleb sert ikka osta näiteks sertifitseerimis asutustest (Verisign/Comodo).

Viited

Autor

Tõnu Erm 18.10.2012