Windows juhend: Kuidas digiallkirjastada allkirjastamata draivereid
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:
Turbekataloog testdriver.cat sisu:
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
See käsk loob privaat võtme, mille peab sisestama. Soovitav on see ülesse märkida!
Sisestame parooli (näites on selleks: test):
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>
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"
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.
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
- http://msdn.microsoft.com/en-us/library/windows/hardware/ff547660%28v=vs.85%29.aspx
- http://msdn.microsoft.com/en-us/library/windows/hardware/ff548693%28v=vs.85%29.aspx
- http://msdn.microsoft.com/en-us/library/bfsktky3.aspx
- http://msdn.microsoft.com/en-us/library/ff547089%28VS.85%29.aspx
Autor
Tõnu Erm 18.10.2012