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"
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
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
$ 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
.
inGeneracija kataloga končana
.
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
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
).