Jak podepsat ovladač ve Windows x64 10 / 8.1 / 7 pomocí self-signed certifikát

Všechny 64bitové verze systému Windows, počínaje systémem Windows 7, ve výchozím nastavení zakazují instalaci ovladačů zařízení, které nejsou podepsány správným digitálním podpisem. Nepodepsané ovladače jsou operačním systémem blokovány. Přítomnost digitálního podpisu (do jisté míry) zaručuje, že ovladač je uvolněn konkrétním vývojářem nebo prodejcem a jeho kód nebyl po podpisu změněn..

V systému Windows 10/7 x64 existuje několik způsobů, jak zakázat ověření digitálního podpisu nainstalovaného ovladače: pomocí Zásady skupiny nebo režimu spuštění systému (další podrobnosti naleznete v článku Zakázání ověření digitálního podpisu pro instalaci nepodepsaných ovladačů ve Windows).

Dnes vám ukážeme, jak můžete self-sign libovolný nepodepsaný ovladač pro 64bitovou verzi Windows 10 nebo Windows 7.

Předpokládejme, že máme ovladač pro některé zařízení pro x64 Windows 10 nebo Windows 7, které nemají digitální podpis (v našem příkladu to bude ovladač pro poměrně starou grafickou kartu). Archiv ovladačů pro naši verzi Windows (podařilo se mi najít ovladač pro Windows Vista x64) byl stažen z webu výrobce a jeho obsah byl rozbalen v adresáři c: \ tools \ drv1 \. Zkusme nainstalovat ovladač přidáním do úložiště ovladačů systému Windows pomocí standardního nástroje pnputil.

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

Poznámka:. Tento a všechny následující příkazy jsou prováděny na příkazovém řádku, který je spuštěn s oprávněními správce..

Během instalace Windows 7 zobrazí varování, že systém nemůže ověřit digitální podpis tohoto ovladače.

V systému Windows 10 se takové varování neobjeví a v konzole se objeví varování, že v souboru INF třetí strany nejsou žádné informace o digitálním podpisu..

Pokud se pokusíte nainstalovat ovladač z Průzkumníka Windows, klepněte na soubor RMB v inf souboru ovladače a vyberte Nainstalovat / Nainstalovat objeví se chyba:

INF třetí strany neobsahuje informace o digitálním podpisu.

INF třetí strany neobsahuje informace o podpisu.

Zkusme podepsat tento ovladač pomocí certifikátu s vlastním podpisem.

Obsah:

  • Nástroje potřebné pro podepsání ovladače
  • Vytvořte certifikát s vlastním podpisem a soukromý klíč
  • Vygenerujte soubor ovladače CAT
  • Podepisujeme řidiče vlastním podpisem
  • Instalace certifikátu
  • Instalace ovladače certifikovaného certifikátem s vlastním podpisem

Nástroje potřebné pro podepsání ovladače

Abychom mohli fungovat, musíme si stáhnout a nainstalovat (s výchozím nastavením) následující nástroje pro vývojáře aplikací pro Windows.

  • Windows SDK (nebo Microsoft Visual Studio 2005 nebo vyšší) pro vaši verzi Windows - tyto balíčky zahrnují nástroje Windows SDK Signing Tools pro Desktop, které zahrnují nástroj, který potřebujeme - signtool.exe;
  • Windows Driver Kit 7.1.0 - obraz ISO  GRMWDK_CS_7600_1.ISO velikost 649 Mb
Tip. V systému Windows 10 můžete použít novější verze sady Windows SDK a Windows Driver Kit. Před instalací těchto nástrojů se ujistěte, že je ve vašem systému nainstalován .NET Framework 4..

Vytvořte certifikát s vlastním podpisem a soukromý klíč

V kořenovém adresáři disku vytvořte adresář C: \ DriverCert.

Otevřete příkazový řádek a přejděte do následujícího adresáře:

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

Vytvořte certifikát s vlastním podpisem a soukromý klíč vydaný například pro Winitpro:

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

Během vytváření vás nástroj požádá o zadání hesla pro klíč, ať už je P@ss0wrd.

Na základě vygenerovaného certifikátu vytvořte veřejný klíč pro certifikát vydavatele softwaru (PKCS).

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

Kombinujte veřejný klíč (.spc) a soukromý klíč (.pvk) do jednoho souboru certifikátu výměny osobních informací (.pfx).

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

Tip. Můžete vytvořit certifikát s vlastním podpisem typu Podepisování kódu bez použití nástrojů třetích stran pomocí rutiny PowerShell 5.0 cmd - New-SelfSifgnedCertificate.

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

Potom musíte exportovat tento certifikát do souboru pfx s heslem:

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

Tip. Přestože má certifikát omezenou dobu platnosti, vypršení platnosti certifikátu CodeSigning znamená, že nemůžete vytvořit nové podpisy. Platnost ovladače již podepsaného tímto certifikátem je neomezená (nebo staré podpisy platí pro zadanou časovou značku).

Vygenerujte soubor ovladače CAT

Vytvořte adresář C: \Drivercert\xg a zkopírujte do něj všechny soubory z adresáře, do kterého byl původně rozbalen archiv s ovladačem (c: \ tools \ drv1 \). Ujistěte se, že mezi soubory jsou soubory s příponou .sys a .inf (v našem případě xg20grp.sys a xg20gr).

Pojďme do adresáře:

cd C: \ WinDDK \ 7600.16385.1 \ bin \ selfsign

Na základě souboru inf pomocí nástroje inf2cat.exe (součástí soupravy Windows Driver Kit -WDK) vygenerujeme soubor cat pro naši platformu (obsahuje informace o všech souborech balíčku ovladačů).

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

Chcete-li se ujistit, že postup byl správný, zkontrolujte, zda jsou zprávy v protokolu:

Test signability dokončen.
a
Generování katalogu bylo dokončeno.

Tip. V mém případě příkaz Inf2Cat.exe vrátil chybu:

Test signability selhal.

Chyby:

22.9.7: DriverVer nastaven na nesprávné datum (u nejnovějších OS musí být datem 21. 4. 2009) v \ hdx861a.inf

Chcete-li chybu opravit, v části [Verze] najděte řádek s DriverVer = a nahraďte jej:

DriverVer = 05/01 / 2009,9.9.9.9.9

Po provedení příkazu by měl být soubor g20gr.cat aktualizován v adresáři ovladače

Podepisujeme řidiče vlastním podpisem

Přejít do adresáře:

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

Podepsanou sadu ovladačů podepíšeme certifikátem, který jsme vytvořili, jako službu časového razítka (časové razítko) použijeme prostředek Globalsign. Následující příkaz digitálně podepíše soubor CAT pomocí certifikátu uloženého v souboru PFX chráněném heslem.

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

Pokud je soubor úspěšně podepsán, mělo by se zobrazit následující:

Úspěšně podepsáno: C: \ DriverCert \ xg \ xg20gr.cat
Počet úspěšně podepsaných souborů: 1

Poznámka:. Ovladač je digitálně podepsán v souboru .cat, na který odkazuje soubor ovladače INF. Pomocí následujícího příkazu můžete ověřit digitální podpis ovladače v souboru cat:

SignTool ověřte / v / pa c: \ DriverCert \ xg \ xg20gr.cat

Lido ve vlastnostech souboru na kartě Digitální podpisy.

Soubor CAT obsahuje digitální podpisy (otisky prstů) všech souborů, které jsou v adresáři ovladačů (soubory, které jsou uvedeny v souboru INF v sekci Copyfiles) Pokud byl některý z těchto souborů změněn, kontrolní součet souborů se neshoduje s daty v souboru CAT, v důsledku toho instalace takového ovladače selže..

Instalace certifikátu

Protože certifikát, který jsme vytvořili, je podepsán sám sebou, systém jej ve výchozím nastavení nedůvěřuje. Přidejte náš certifikát do místního skladu certifikátů. To lze provést pomocí příkazů:

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

Nebo z grafického průvodce přidáváním certifikátů (certifikát musí být umístěn do úložiště Důvěryhodné Vydavatelé a Důvěryhodné Kořen Certifikace Úřady místní stroj) V doméně můžete tento certifikát distribuovat centrálně na pracovní stanice pomocí zásad skupiny.

Poznámka:. Dostupnost certifikátu, který jsme vytvořili v důvěryhodných, můžete zkontrolovat otevřením modulu snap-in pro správu certifikátů (certmgr.msc) a kontrolou přítomnosti certifikátu, který jsme vytvořili (vydáno pro winitpro) v odpovídajících úložištích..

Poznámka:. Při kontrole úložiště certifikátů pomocí obslužného programu Sigcheck bude tento certifikát zobrazen jako nedůvěryhodný, protože není v seznamu se seznamem kořenových certifikátů společnosti Microsoft (tento seznam je třeba pravidelně aktualizovat).

Instalace ovladače certifikovaného certifikátem s vlastním podpisem

Zkusme nainstalovat ovladač, který jsme podepsali znovu spuštěním příkazu:

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

Nyní se během instalace ovladače neobjeví varovné okno o chybějícím digitálním podpisu ovladače.

Ovladač byl úspěšně nainstalován na zařízení v systému.
Balíček ovladačů byl úspěšně přidán.

Ve Windows 7 se toto varování zobrazí. o tom, zda jste si jisti, že chcete nainstalovat tento ovladač (v systému Windows 10 x64 1803 se takové vyskakovací okno nezobrazí). Kliknutím na tlačítko „Nainstalovat", nainstalujete ovladač do systému.

Pokud z nějakého důvodu není ovladač nainstalován, je v souboru obsažen podrobný protokol instalace ovladače C: \ Windows\ inf\ setupapi.dev.log. Tento protokol vám umožní získat podrobnější informace o chybě instalace. Ve většině případů dojde k chybě „Ověření podpisu balíčku selhalo“ - s největší pravděpodobností to znamená, že certifikát ovladače není přidán k důvěryhodným certifikátům.

Pokud byla instalace ovladače úspěšná, objeví se v souboru setupapi.dev.log následující řádky:

>>> [Instalace zařízení (DiInstallDriver) - C: \ WINDOWS \ System32 \ DriverStore \ FileRepository \ xg20gr.inf_amd64_c5955181485ee80a \ xg20gr.inf] >>> Začátek sekce 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: DriverStore \ FileRepository \ xg20gr.inf_amd64_c5955181485ee80a \ xg20gr.inf 23: 32: 57,046 inf: Styl kopírování: 0x00000000 inf: Cesta úložiště ovladačů: C: \ WINDOWS \ System32 \ DriverStore \ FileRepository \ xg20gr.inf_5514inf_am1464_ 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]

Jak vidíte, při instalaci ovladače s vlastním podpisem jsme nemuseli dokonce deaktivovat ověřování digitálních podpisů ovladačů pomocí bcdedit.exe, jak je popsáno zde (příkazy bcdedit.exe / set loadoptions DISABLE_INTEGRITY_CHECKS a bcdedit.exe / set testsigning ON).