Ako podpísať ovládač v systéme Windows x64 10 / 8.1 / 7 pomocou certifikátu s vlastným podpisom

Všetky 64-bitové verzie systému Windows, počnúc systémom Windows 7, v predvolenom nastavení zakazujú inštaláciu ovládačov zariadení, ktoré nie sú podpísané správnym digitálnym podpisom. Neprihlásené ovládače sú blokované operačným systémom. Prítomnosť digitálneho podpisu (do určitej miery) zaručuje, že ovládač uvoľní konkrétny vývojár alebo predajca a jeho kód sa po podpísaní nezmenil..

Vo Windows 10/7 x64 existuje niekoľko spôsobov, ako zakázať overenie digitálneho podpisu nainštalovaného ovládača: pomocou skupinovej politiky alebo testovacieho režimu zavedenia systému (ďalšie podrobnosti nájdete v článku Zakázanie overovania digitálneho podpisu pre inštaláciu nepodpísaných ovládačov v systéme Windows).

Dnes vám ukážeme, ako môžete samostatne podpíše akýkoľvek nepodpísaný ovládač pre 64-bitovú verziu windows 10 alebo Windows 7.

Predpokladajme, že máme ovládač pre niektoré zariadenia pre x64 Windows 10 alebo Windows 7, ktoré nemajú digitálny podpis (v našom príklade to bude ovládač pre pomerne starú grafickú kartu). Archív ovládačov pre našu verziu systému Windows (podarilo sa mi nájsť ovládač pre systém Windows Vista x64) bol stiahnutý z webovej stránky výrobcu a jeho obsah bol rozbalený v adresári c: \ tools \ drv1 \. Skúsme nainštalovať ovládač pridaním do úložiska ovládačov Windows pomocou štandardného nástroja pnputil.

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

poznámka. Tento a všetky nasledujúce príkazy sa vykonávajú na príkazovom riadku, ktorý je spustený s oprávneniami správcu..

Počas inštalácie systém Windows 7 zobrazí upozornenie, že systém nemôže overiť digitálny podpis tohto ovládača.

V systéme Windows 10 sa takéto upozornenie nezobrazí a na konzole sa zobrazí upozornenie, že v súbore INF tretej strany nie sú žiadne informácie o digitálnom podpise..

Pri pokuse o inštaláciu ovládača z Prieskumníka systému Windows kliknite na súbor RMB v informačnom súbore ovládača a vyberte položku inštalovať / zriadiť objaví sa chyba:

INF tretej strany neobsahuje informácie o digitálnom podpise.

INF tretej strany neobsahuje podpisové informácie.

Pokúsme sa podpísať tento ovládač pomocou certifikátu s vlastným podpisom.

obsah:

  • Nástroje potrebné na podpísanie vodiča
  • Vytvorte certifikát s vlastným podpisom a súkromný kľúč
  • Vytvorte súbor ovládača CAT
  • Vodič podpisujeme vlastnoručne podpísaným certifikátom
  • Inštalácia certifikátu
  • Inštalácia ovládača certifikovaného vlastnoručným certifikátom

Nástroje potrebné na podpísanie vodiča

Aby sme mohli pracovať, musíme si stiahnuť a nainštalovať (s predvolenými nastaveniami) nasledujúce nástroje pre vývojárov aplikácií pre Windows.

  • Windows SDK (alebo Microsoft Visual Studio 2005 alebo novší) pre vašu verziu systému Windows - tieto balíčky zahŕňajú nástroje na podpisovanie Windows SDK pre pracovnú plochu, ktoré zahŕňajú pomôcku, ktorú potrebujeme - signtool.exe;
  • Windows Driver Kit 7.1.0 - obraz ISO  GRMWDK_EN_7600_1.ISO veľkosť 649 Mb
rada. V systéme Windows 10 môžete používať novšie verzie súpravy Windows SDK a Windows Driver Kit. Pred inštaláciou týchto nástrojov skontrolujte, či je vo vašom systéme nainštalovaná .NET Framework 4..

Vytvorte certifikát s vlastným podpisom a súkromný kľúč

V koreňovom adresári disku vytvorte adresár C: \ DriverCert.

Otvorte príkazový riadok a prejdite do nasledujúceho adresára:

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

Vytvorte certifikát s vlastným podpisom a súkromný kľúč vydaný napríklad pre Winitpro:

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

Počas vytvárania vás program požiada o zadanie hesla pre kľúč, nech už je P@ss0WRD.

Na základe vygenerovaného certifikátu vytvorte verejný kľúč pre certifikát vydavateľa softvéru (PKCS).

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

Kombinujte verejný kľúč (.spc) a súkromný kľúč (.pvk) do jedného súboru certifikátov výmeny osobných informácií (.pfx).

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

rada. Môžete vytvoriť certifikát s vlastným podpisom typu Podpis kódu bez použitia nástrojov tretích strán pomocou rutiny PowerShell 5.0 cmd - New-SelfSifgnedCertificate.

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

Potom musíte exportovať tento certifikát do súboru pfx s heslom:

$ CertPassword = ConvertTo-SecureString -String “P @ ss0wrd” -Force -AsPlainText
Exportovať-PfxCertifikovať -Cert $ cert -FilePath C: \ DriverCert \ myDrivers.pfx -Password $ CertPassword

rada. Aj keď má certifikát obmedzenú dobu platnosti, uplynutie platnosti certifikátu CodeSigning znamená, že nemôžete vytvárať nové podpisy. Platnosť vodiča podpísaného týmto certifikátom je neobmedzená (alebo staré podpisy platia pre zadanú časovú pečiatku).

Vytvorte súbor ovládača CAT

Vytvorte adresár C: \DriverCert\xg a skopírujte doň všetky súbory z adresára, do ktorého bol pôvodne rozbalený archív s ovládačom (c: \ tools \ drv1 \). Uistite sa, že medzi súbormi existujú súbory s príponou .sys a .inf (v našom prípade xg20grp.sys a xg20gr).

Poďme do adresára:

cd C: \ WinDDK \ 7600.16385.1 \ bin \ selfsign

Na základe súboru inf pomocou nástroja inf2cat.exe (súčasťou súpravy Windows Driver Kit -WDK) vygenerujeme súbor cat pre našu platformu (obsahuje informácie o všetkých súboroch balíka ovládačov).

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

Aby ste sa uistili, že postup bol správny, skontrolujte, či sú správy v denníku:

Test signability dokončený.
a
Generovanie katalógu bolo dokončené.

rada. V mojom prípade príkaz Inf2Cat.exe vrátil chybu:

Test signability zlyhal.

chyby:

22.9.7: DriverVer je nastavený na nesprávny dátum (v prípade najnovšieho operačného systému musí byť dátum 21. 4. 2009) v súbore \ hdx861a.inf

Ak chcete chybu opraviť, v časti [Verzia] nájdite riadok s DriverVer = a nahraďte ho:

DriverVer = 05/01 / 2009,9.9.9.9.9

Po vykonaní príkazu by sa mal súbor g20gr.cat aktualizovať v adresári ovládačov

Vodič podpisujeme vlastnoručne podpísaným certifikátom

Prejdite do adresára:

cd "C: \ Program Files (x86) \ Windows Kits \ 10 \ bin \ 10.0.17134.0 \ x64"

Súbor súborov ovládačov podpíšeme certifikátom, ktorý sme vytvorili, ako službu časových pečiatok (časové pečiatky) použijeme prostriedok Globalsign. Nasledujúci príkaz digitálne podpíše súbor CAT pomocou certifikátu uloženého v súbore PFX chránenom heslom.

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

Ak je súbor úspešne podpísaný, malo by sa zobraziť nasledujúce:

Úspešne podpísaný: C: \ DriverCert \ xg \ xg20gr.cat
Počet úspešne podpísaných súborov: 1

poznámka. Ovládač je digitálne podpísaný v súbore .cat, na ktorý odkazuje súbor ovládača .inf. Pomocou nasledujúceho príkazu môžete overiť digitálny podpis ovládača v súbore cat:

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

Lido vo vlastnostiach súboru na karte Digitálne podpisy.

Súbor CAT obsahuje digitálne podpisy (odtlačky prstov) všetkých súborov, ktoré sú v adresári ovládačov (súbory uvedené v súbore INF v časti). CopyFiles). Ak bol niektorý z týchto súborov zmenený, kontrolný súčet súborov sa nezhoduje s údajmi v súbore CAT, v dôsledku toho zlyhá inštalácia takéhoto ovládača..

Inštalácia certifikátu

pretože certifikát, ktorý sme vytvorili, je podpísaný sám sebou, systém ho v predvolenom nastavení nedôveruje. Pridajte náš certifikát do miestneho skladu certifikátov. To je možné vykonať pomocou príkazov:

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

Alebo z grafického sprievodcu pridávaním certifikátov (certifikát musí byť umiestnený v úložisku dôveryhodný Vydavatelia a dôveryhodný koreň osvedčenie úrady miestny stroj). V doméne môžete tento certifikát centrálne distribuovať na pracovné stanice pomocou skupinovej politiky.

poznámka. Dostupnosť certifikátu, ktorý sme vytvorili v dôveryhodných, môžete skontrolovať otvorením modulu snap-in na správu certifikátov (certmgr.msc) a kontrolou prítomnosti certifikátu, ktorý sme vytvorili (vydaný pre winitpro) v príslušných obchodoch..

poznámka. Pri kontrole skladu certifikátov pomocou pomocného programu Sigcheck sa tento certifikát zobrazí ako nedôveryhodný, pretože nie je v zozname so zoznamom koreňových certifikátov spoločnosti Microsoft (tento zoznam sa musí pravidelne aktualizovať).

Inštalácia ovládača certifikovaného vlastnoručným certifikátom

Skúsme nainštalovať ovládač, ktorý sme podpísali znova spustením príkazu:

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

Počas inštalácie ovládača sa teraz nezobrazí varovné okno o chýbajúcom digitálnom podpise ovládača.

Ovládač bol úspešne nainštalovaný do zariadenia v systéme.
Balíček ovládačov bol úspešne pridaný.

V systéme Windows 7 sa toto upozornenie zobrazí. o tom, či ste si istí, že chcete nainštalovať tento ovládač (v systéme Windows 10 x 64 1803 sa takéto kontextové okno nezobrazí). Kliknutím na tlačidlo „inštalovať“, nainštalujete ovládač do systému.

Ak z nejakého dôvodu ovládač nie je nainštalovaný, je v súbore obsiahnutý podrobný protokol inštalácie ovládača C: \ Windows\ inf\ setupapi.dev.log. Tento protokol vám umožní získať podrobnejšie informácie o chybe inštalácie. Vo väčšine prípadov sa vyskytne chyba „Overenie podpisu zlyhaného balíka ovládačov“ - s najväčšou pravdepodobnosťou to znamená, že certifikát vodiča nie je pridaný k dôveryhodným certifikátom.

Ak bola inštalácia ovládača úspešná, v súbore setupapi.dev.log sa zobrazia nasledujúce riadky:

>>> [Inštalácia zariadenia (DiInstallDriver) - C: \ WINDOWS \ System32 \ DriverStore \ FileRepository \ xg20gr.inf_amd64_c5955181485ee80a \ xg20gr.inf] >>> Začiatok sekcie 2018/07/22 23: 32: 57.015 cmd: Pnputil -i - ac: \ DriverCert \ xg \ xg20gr.inf ndv: Flags: 0x00000000 ndv: INF cesta: C: \ WINDOWS \ System32 \ DriverStore \ FileRepository \ xg20gr.inf_amd64_c5955181485ee80a \ xg20gr.inf inf: SetupCopyOEMInf: C: WIN: DriverStore \ FileRepository \ xg20gr.inf_amd64_c5955181485ee80a \ xg20gr.inf 23: 32: 57,046 inf: Štýl kopírovania: 0x00000000 inf: Cesta úložiska ovládačov: C: \ WINDOWS \ System32 \ DriverStore \ FileRepository \ xg20gr.inf_5514inf_5514inf_5514infinf Inf Cesta: C: \ WINDOWS \ INF \ oem23.inf inf: SetupCopyOEMInf exit (0x00000000) 23: 32: 57.077 <<<  Section end 2018/07/22 23:32:57.155 <<<  [Exit status: SUCCESS]

Ako vidíte, na inštaláciu ovládača s vlastným podpisom sme nemuseli ani zakázať overovanie digitálnych podpisov vodičov pomocou bcdedit.exe, ako je to opísané tu (príkazy bcdedit.exe / set loadoptions DISABLE_INTEGRITY_CHECKS a bcdedit.exe / set testingigning ON).