Kako podpisati gonilnik v operacijskem sistemu Windows x64 10 / 8.1 / 7 s pomočjo samopodpisanega potrdila

Vse 64-bitne različice sistema Windows, začenši z operacijskim sistemom Windows 7, privzeto prepovedujejo namestitev gonilnikov naprav, ki niso podpisani s pravilnim digitalnim podpisom. Operacijski sistem blokira nepodpisane gonilnike. Prisotnost digitalnega podpisa zagotavlja (do neke mere), da gonilnik izda določen razvijalec ali prodajalec, njegova koda pa po podpisu ni bila spremenjena.

V sistemu Windows 10/7 x64 obstaja več načinov za onemogočanje preverjanja digitalnega podpisa nameščenega gonilnika: z uporabo pravilnika skupine ali načina zagona testnega sistema (za več podrobnosti glejte članek Onemogočanje preverjanja digitalnega podpisa za namestitev nepopisanih gonilnikov v sistem Windows)..

Danes prikazujemo, kako zmorete podpišite kateri koli gonilnik brez podpisa za 64-bitno različico Windows 10 ali Windows 7.

Recimo, da imamo gonilnik za neko napravo za x64 Windows 10 ali Windows 7, ki nima digitalnega podpisa (v našem primeru bo to gonilnik za precej staro video kartico). Arhiv gonilnikov za našo različico sistema Windows (uspel sem najti gonilnik za sistem Windows Vista x64) je bil prenesen s proizvajalčevega spletnega mesta, njegova vsebina pa je bila razpakirana v imeniku c: \ tools \ drv1 \. Poskusimo namestiti gonilnik tako, da ga dodamo v shrambo gonilnikov Windows s standardnim pripomočkom pnputil.

Pnputil -a "C: \ orodja \ drv1 \ xg20gr.inf"

Opomba. Ta in vsi nadaljnji ukazi se izvajajo v ukazni vrstici, ki se izvaja s skrbniškimi privilegiji..

Med namestitvijo bo Windows 7 prikazal opozorilo, da sistem ne more preveriti digitalnega podpisa tega gonilnika.

V operacijskem sistemu Windows 10 se takšno opozorilo sploh ne pojavi, na konzoli pa se pojavi opozorilo, da v INF datoteki tretje osebe ni podatkov o digitalnem podpisu.

Ko poskušate namestiti gonilnik iz programa Windows Explorer, če na datoteko inf z gonilnikom kliknete RMB in izberete Namestite / Namestite prikaže se napaka:

Tretja stranka INF ne vsebuje podatkov o digitalnem podpisu.

Tretja stranka INF ne vsebuje podpisnih informacij.

Poskusimo podpisati ta gonilnik s potrdilom s samopodpisom.

Vsebina:

  • Pripomočki, potrebni za podpisovanje voznika
  • Ustvari samopodpisano potrdilo in zasebni ključ
  • Ustvari datoteko z gonilniki CAT
  • Voznika podpišemo s samopodpisanim potrdilom
  • Namestitev certifikata
  • Namestitev gonilnika, potrjenega s samopodpisanim potrdilom

Pripomočki, potrebni za podpisovanje voznika

Za delo moramo prenesti in namestiti (s privzetimi nastavitvami) naslednja orodja za razvijalce aplikacij za Windows.

  • Windows SDK (ali Microsoft Visual Studio 2005 ali novejši) za vašo različico sistema Windows - ti paketi vključujejo orodja za podpisovanje sistema Windows SDK za namizje, ki vključuje pripomoček, ki ga potrebujemo - signtool.exe;
  • Windows Driver Kit 7.1.0 - ISO Image  GRMWDK_EN_7600_1.ISO velikost 649 Mb
Namig. V sistemu Windows 10 lahko uporabite novejše različice sistema Windows SDK in kompleta gonilnikov Windows. Preden namestite ta orodja, se prepričajte, da je .NET Framework 4 nameščen v vašem sistemu..

Ustvari samopodpisano potrdilo in zasebni ključ

Ustvarite imenik C: \ DriverCert v korenu diska.

Odprite ukazno vrstico in pojdite v naslednji imenik:

cd C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.1 \ bin

Ustvarite samopodpisano potrdilo in zasebni ključ, izdan, recimo, za Winitpro:

makecert -r -sv C: \ DriverCert \ myDrivers.pvk -n CN = "Winitpro" C: \ DriverCert \ MyDrivers.cer

Med ustvarjanjem vas bo program zahteval, da določite geslo za ključ, naj bo P@ss0wrd.

Na podlagi ustvarjenega potrdila ustvarite javni ključ za potrdilo izdajatelja programske opreme (PKCS).

cert2spc C: \ DriverCert \ myDrivers.cer C: \ DriverCert \ myDrivers.spc

Združite javni ključ (.spc) in zasebni ključ (.pvk) v eni datoteki potrdil o izmenjavi osebnih podatkov (.pfx).

pvk2pfx -pvk C: \ DriverCert \ myDrivers.pvk -pi P @ ss0wrd -spc C: \ DriverCert \ myDrivers.spc -pfx C: \ DriverCert \ myDrivers.pfx -po P @ ss0wrd

Namig. Ustvarite lahko samopodpisano potrdilo vrste Podpisovanje kode, ne da bi pri tem uporabljali orodja drugih proizvajalcev s pomočjo cmdlet PowerShell 5.0 - New-SelfSifgnedCertificate.

$ cert = New-SelfSignedCertificate -Subject "Winitpro" -Type CodeSigningCert -CertStoreLocation cert: \ LocalMachine \ My

Nato morate to potrdilo izvoziti v pfx datoteko z geslom:

$ CertPassword = PretvoriTo-SecureString -String "P @ ss0wrd" -Force -AsPlainText
Export-PfxCertificate -Cert $ cert -FilePath C: \ DriverCert \ myDrivers.pfx -Password $ CertPassword

Namig. Čeprav ima potrdilo omejeno obdobje veljavnosti, prenehanje veljavnosti certifikata CodeSigning pomeni, da ne morete ustvariti novih podpisov. Veljavnost gonilnika, ki je že podpisan s tem potrdilom, je neomejena (ali stari podpisi veljajo za določen časovni žig).

Ustvari datoteko z gonilniki CAT

Ustvari imenik C: \Drivercert\xg in vanj kopirajte vse datoteke iz imenika, v katerega je bil prvotno razpakiran arhiv z gonilnikom (c: \ tools \ drv1 \). Prepričajte se, da so med datotekami datoteke s pripono .sys in .inf (v našem primeru xg20grp.sys in xg20gr).

Pojdimo v imenik:

cd C: \ WinDDK \ 7600.16385.1 \ bin \ selfsign

Na podlagi inf datoteke bomo s pomočjo pripomočka inf2cat.exe (ki je priložen kompletu Windows Driver Kit -WDK) ustvarili mačjo datoteko za našo platformo (vsebuje podatke o vseh datotekah gonilniškega paketa).

inf2cat.exe / gonilnik: "C: \ DriverCert \ xg" / os: 7_X64 / verbose

Če želite preveriti, ali je bil postopek pravilen, preverite, ali so sporočila v dnevniku:

Test preizkusa je zaključen.
in
Generacija kataloga končana.

Namig. V mojem primeru je ukaz Inf2Cat.exe vrnil napako:

Preizkus podpisovanja ni uspel.

Napake:

22.9.7: DriverVer nastavljen na napačen datum (mora biti odložen na 21.4.2009 za najnovejši OS) v \ hdx861a.inf

Če želite odpraviti napako, v razdelku [Različica] poiščite vrstico z DriverVer = in jo nadomestite z:

DriverVer = 05/01 / 2009,9.9.9.9.9

Po izvedbi ukaza je treba datoteko g20gr.cat posodobiti v imeniku gonilnikov

Voznika podpišemo s samopodpisanim potrdilom

Pojdite v imenik:

cd "C: \ programske datoteke (x86) \ kompleti Windows \ 10 \ bin \ 10.0.17134.0 \ x64"

Nabor vozniških datotek bomo podpisali s potrdilom, ki smo ga ustvarili, kot storitev časovnega žiga (časovni žig) bomo uporabili vir Globalsign. Naslednji ukaz bo digitalno podpisal datoteko CAT s potrdilom, shranjenim v datoteki, zaščiteni z geslom PFX.

znak signtool / f C: \ DriverCert \ myDrivers.pfx / p P @ ss0wrd / t http://timestamp.globalsign.com/scripts/timstamp.dll / v "C: \ DriverCert \ xg \ xg20gr.cat"

Če je datoteka uspešno podpisana, se mora prikazati naslednje:

Uspešno podpisano: C: \ DriverCert \ xg \ xg20gr.cat
Število uspešno podpisanih datotek: 1

Opomba. Gonilnik je digitalno podpisan v datoteki .cat, na katero se nanaša gonilniška datoteka .inf. Z naslednjim ukazom lahko preverite digitalni podpis gonilnika v datoteki cat:

SignTool verify / v / pa c: \ DriverCert \ xg \ xg20gr.cat

Lido v lastnostih datotek na zavihku Digitalni podpisi.

Datoteka CAT vsebuje digitalne podpise (odtise sličic) vseh datotek v imeniku gonilnikov (datoteke, ki so navedene v datoteki INF v razdelku Kopije) Če je bila katera od teh datotek spremenjena, kontrolna vsota datotek ne bo sovpadala s podatki v datoteki CAT, zato namestitev takega gonilnika ne bo uspela.

Namestitev certifikata

Ker potrdilo, ki smo ga ustvarili, je samopodpisano, sistem mu ne privzeto zaupa. Dodajte naš certifikat v lokalno trgovino s potrdili. To lahko storite s pomočjo ukazov:

certmgr.exe -add C: \ DriverCert \ myDrivers.cer -s -r localMachine ROOT
certmgr.exe -add C: \ DriverCert \ myDrivers.cer -s -r localMachine TRUSTEDPUBLISHER

Ali pa iz grafičnega čarovnika za dodajanje potrdil (potrdilo mora biti postavljeno v shrambo Zaupano Založniki in Zaupano Koren Certificiranje Oblasti lokalni stroj) V domeni lahko to potrdilo centralno razdelite na delovne postaje z uporabo skupinskih pravilnikov.

Opomba. Razpoložljivost potrdila, ki smo ga ustvarili v zaupanja vrednih, lahko preverite tako, da odprete snap-in za upravljanje potrdil (certmgr.msc) in preverite prisotnost potrdila, ki smo ga ustvarili (izdali za winitpro), v ustreznih trgovinah.

Opomba. Pri preverjanju skladišča potrdil s pripomočkom Sigcheck bo to potrdilo prikazano kot nezaupano, ker ni na seznamu s seznamom Microsoftovih korenskih potrdil (ta seznam je treba redno posodabljati).

Namestitev gonilnika, potrjenega s samopodpisanim potrdilom

Poskusimo znova namestiti gonilnik, ki smo ga podpisali, tako da zaženemo ukaz:

Pnputil -i -a C: \ DriverCert \ xg20 \ xg20gr.inf

Zdaj se med namestitvijo gonilnika ne prikaže okno z opozorilom o manjkajočem digitalnem podpisu gonilnika.

Gonilnik je bil uspešno nameščen v napravi v sistemu.
Paket gonilnikov je uspešno dodan.

V operacijskem sistemu Windows 7 se prikaže to opozorilo. o tem, ali ste prepričani, da želite namestiti ta gonilnik (v sistemu Windows 10 x64 1803 se takšno pojavno okno ne prikaže). S klikom na "Namestite", namestite gonilnik v sistem.

Če gonilnik iz nekega razloga ni nameščen, je v datoteki podroben dnevnik namestitve gonilnika C: \ Windows\ inf\ setupapi.razv.dnevnik. Ta dnevnik vam bo omogočil podrobnejše informacije o napaki pri namestitvi. V večini primerov pride do napake "Paket gonilnikov ni uspel preverjanje podpisa" - najverjetneje to pomeni, da vozniško potrdilo ni dodano zaupanja vrednim potrdilom.

Če je bila namestitev gonilnika uspešna, se v datoteki setupapi.dev.log pojavijo naslednje vrstice:

>>> [Namestitev naprave (DiInstallDriver) - C: \ WINDOWS \ System32 \ DriverStore \ FileRepository \ xg20gr.inf_amd64_c5955181485ee80a \ xg20gr.inf] >>> Začetek razdelka 2018/07/22 23: 32: 57.015 cmd: Pnputil -i ac: \ DriverCert \ xg \ xg20gr.inf ndv: Zastave: 0x00000000 ndv: INF pot: C: \ WINDOWS \ System32 \ DriverStore \ FileRepository \ xg20gr.inf_amd64_c5955181485ee80a \ xg20gr.inf inf: SetupCoN DriverStore \ FileRepository \ xg20gr.inf_amd64_c5955181485ee80a \ xg20gr.inf 23: 32: 57.046 inf: Slog kopiranja: 0x00000000 inf: Pot do gonilnika Driver: C: \ WINDOWS \ System32 \ DriverStore \ FileRepository \ xg20gaminin595 Inf Pot: C: \ WINDOWS \ INF \ oem23.inf inf: SetupCopyOEMInf izhod (0x00000000) 23: 32: 57.077 <<<  Section end 2018/07/22 23:32:57.155 <<<  [Exit status: SUCCESS]

Kot lahko vidite, za namestitev gonilnika z lastnim podpisom nam sploh ni bilo treba onemogočiti preverjanja digitalnega podpisa gonilnikov z uporabo bcdedit.exe, kot je opisano tukaj (ukazi bcdedit.exe / nastavi obremenitve DISABLE_INTEGRITY_CHECKS in bcdedit.exe / nastavi preizkus, ki je vključen).