Kako potpisati upravljački program u sustavu Windows x64 10 / 8.1 / 7 koristeći samopotpisanu potvrdu

Sve 64-bitne verzije sustava Windows, počevši od sustava Windows 7, prema zadanom zabranjuju instalaciju upravljačkih programa uređaja koji nisu potpisani ispravnim digitalnim potpisom. Nepodpisani upravljački programi blokiraju operativni sustav. Prisutnost digitalnog potpisa jamči (u određenoj mjeri) da upravljački program pušta određeni programer ili dobavljač, a njegov kod nije modificiran nakon potpisivanja.

U sustavu Windows 10/7 x64 postoji nekoliko načina za onemogućavanje provjere digitalnog potpisa instaliranog upravljačkog programa: upotreba grupnih pravila ili način pokretanja testnog sustava (za više detalja pogledajte članak Onemogućavanje provjere digitalnog potpisa za instaliranje nepotpisanih upravljačkih programa na Windows).

Danas pokazujemo kako možete samopotpišite bilo koji nepotpisani upravljački program za 64-bitnu verziju Windows 10 ili Windows 7.

Pretpostavimo da imamo pogonitelj za neki uređaj za x64 Windows 10 ili Windows 7 koji nema digitalni potpis (u našem primjeru to će biti pogonitelj za prilično staru video karticu). Arhiva upravljačkih programa za našu verziju sustava Windows (uspio sam pronaći upravljački program za sustav Windows Vista x64) preuzeta je s web lokacije proizvođača, a njezin se sadržaj raspakirao u direktoriju c: \ tools \ drv1 \. Pokušajmo instalirati upravljački program dodavanjem ga u skladište upravljačkih programa sustava Windows koristeći standardni uslužni program pnputil.

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

primjedba. Ova i sve naredne naredbe izvršavaju se u naredbenoj liniji koja se izvodi s povlasticama administratora..

Tijekom instalacije Windows 7 prikazat će upozorenje da sustav ne može potvrditi digitalni potpis ovog upravljačkog programa.

U sustavu Windows 10 takvo se upozorenje uopće ne pojavljuje, a na konzoli se pojavljuje upozorenje da u INF datoteci treće strane nema podataka o digitalnom potpisu.

Prilikom pokušaja instaliranja upravljačkog programa iz Windows Explorera, ako na datoteci inf vozača kliknite RMB i odaberite instalirati / uspostaviti pojavit će se pogreška:

INF treće strane ne sadrži podatke o digitalnom potpisu.

INF treće strane ne sadrži podatke o potpisu.

Pokušajmo ovaj vozač potpisati pomoću potvrde o vlastitom potpisu.

sadržaj:

  • Uslužni programi potrebni za potpisivanje vozača
  • Izradite potvrdu o sebi i privatni ključ
  • Stvori datoteku upravljačkih programa CAT
  • Vozača potpisujemo sa vlastitim potpisom
  • Instalacija certifikata
  • Instaliranje vozača ovjere vlastitim potpisom

Uslužni programi potrebni za potpisivanje vozača

Da bismo radili, moramo preuzeti i instalirati (sa zadanim postavkama) sljedeće alate za razvojne programe za Windows.

  • Windows SDK (ili Microsoft Visual Studio 2005 ili noviji) za vašu verziju sustava Windows - ovi paketi uključuju alate za potpisivanje sustava Windows SDK za Desktop koji uključuju uslužni program koji nam treba - signtool.exe;
  • Windows Driver Kit 7.1.0 - ISO slika  GRMWDK_EN_7600_1.ISO veličina 649 Mb
vijeće. U sustavu Windows 10 možete koristiti novije verzije sustava Windows SDK i Windows Driver Kit. Prije instaliranja ovih alata, provjerite je li .NET Framework 4 instaliran na vašem sustavu..

Izradite potvrdu o sebi i privatni ključ

Stvorite direktorij C: \ DriverCert u korijenu diska.

Otvorite naredbeni redak i idite na sljedeći direktorij:

cd C: \ programske datoteke (x86) \ Microsoft SDKs \ Windows \ v7.1 \ bin

Izradite potvrdu o vlastitom potpisu i privatni ključ izdan, recimo, za Winitpro:

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

Tijekom kreiranja uslužni program će tražiti da navedete lozinku za ključ, neka bude P@ss0WRD.

Na temelju generiranog certifikata stvorite javni ključ za certifikat izdavača softvera (PKCS).

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

Kombinirajte javni ključ (.spc) i privatni ključ (.pvk) u jednoj datoteci certifikata razmjene osobnih podataka (.pfx).

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

vijeće. Možete stvoriti vlastoručno potpisan certifikat tipa Signing Signature bez korištenja alata treće strane pomoću PowerShell 5.0 cmdlet - New-SelfSifgnedCertificate.

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

Zatim morate izvoziti ovaj certifikat u pfx datoteku s lozinkom:

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

vijeće. Iako certifikat ima ograničeno razdoblje valjanosti, isticanje certifikata CodeSigning znači da ne možete stvoriti nove potpise. Valjanost vozača koji je već potpisan s ovom potvrdom je neograničena (ili stari potpisi vrijede za navedenu vremensku oznaku).

Stvori datoteku upravljačkih programa CAT

Stvorite direktorij C: \DriverCert\XG i kopirati u nju sve datoteke iz mape u koju je izvorno raspakirana arhiva s upravljačkim programom (c: \ tools \ drv1 \). Provjerite ima li datoteka među datotekama s nastavkom .sys i .inf (u našem slučaju xg20grp.sys i xg20gr).

Idemo u imenik:

cd C: \ WinDDK \ 7600.16385.1 \ bin \ selfsign

Na temelju inf datoteke, pomoću uslužnog programa inf2cat.exe (koji se isporučuje u kompletu Windows Driver Kit -WDK) generirat ćemo mačku datoteku za našu platformu (sadrži podatke o svim datotekama upravljačkog paketa).

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

Da biste bili sigurni da je procedura bila ispravna, provjerite jesu li poruke u dnevniku:

Ispit je potpisan.
i
Generacija kataloga dovršena.

vijeće. U mom slučaju naredba Inf2Cat.exe vratila je pogrešku:

Nije uspio test signalizacije.

greške:

22.9.7: DriverVer postavljen na netočan datum (mora se odgoditi do 4/21/2009 za najnoviji OS) u \ hdx861a.inf

Da biste riješili pogrešku, u odjeljku [Verzija] pronađite liniju s DriverVer = i zamijenite je s:

DriverVer = 05/01 / 2009,9.9.9.9.9

Nakon izvršavanja naredbe, g20gr.cat datoteku treba ažurirati u direktoriju vozača

Vozača potpisujemo sa vlastitim potpisom

Idite u direktorij:

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

Potpisat ćemo skup datoteka upravljačkih programa certifikatom koji smo stvorili, a služba vremenske oznake (vremenska marka) koristit ćemo resurs Globalsign. Sljedeća naredba digitalno će potpisati CAT datoteku pomoću certifikata pohranjenog u PFX datoteci zaštićenoj lozinkom.

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

Ako je datoteka uspješno potpisana, trebalo bi se pojaviti sljedeće:

Uspješno potpisano: C: \ DriverCert \ xg \ xg20gr.cat
Broj uspješno potpisanih datoteka: 1

primjedba. Upravljački program digitalno je potpisan u .cat datoteci na koju se poziva .inf datoteka upravljačkog programa. Pomoću sljedeće naredbe možete provjeriti digitalni potpis vozača u datoteci cat:

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

Lido u svojstvima datoteke na kartici Digital Signatures.

CAT datoteka sadrži digitalni potpis (otisci prstiju) svih datoteka koje se nalaze u direktoriju vozača (datoteke koje su navedene u INF datoteci u odjeljku CopyFiles). Ako je bilo koja od ovih datoteka izmijenjena, kontrolni zbroj datoteka neće se podudarati s podacima u CAT datoteci, kao rezultat toga instalacija takvog upravljačkog programa neće uspjeti..

Instalacija certifikata

jer certifikat koji smo kreirali potpisuje sam, sustav mu ne vjeruje prema zadanom. Dodajte naš certifikat u lokalnu trgovinu certifikata. To se može učiniti pomoću naredbi:

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

Ili iz grafičkog čarobnjaka za dodavanje potvrda (certifikat se mora staviti u pohranu Pouzdani izdavači i Pouzdani korijen potvrda vlasti lokalni stroj). U domeni možete ovu distribuciju centralno distribuirati na radne stanice pomoću grupnih pravila.

primjedba. Dostupnost certifikata koji smo stvorili u pouzdanim možete provjeriti otvaranjem snap-a za upravljanje certifikatom (certmgr.msc) i provjerom prisutnosti certifikata koji smo kreirali (izdanog za winitpro) u odgovarajućim trgovinama.

primjedba. Prilikom provjere spremišta certifikata pomoću uslužnog programa Sigcheck, ovaj će certifikat biti prikazan kao nepouzdan, jer nije na popisu s popisom Microsoftovih korijenskih certifikata (ovaj je popis potrebno periodično ažurirati).

Instaliranje vozača ovjere vlastitim potpisom

Pokušajmo ponovo instalirati upravljački program koji smo potpisali izvođenjem naredbe:

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

Sada se tijekom instalacije upravljačkog programa neće pojaviti prozor s upozorenjem o nestalom digitalnom potpisu vozača.

Upravljački program uspješno je instaliran na uređaj u sustavu.
Paket vozača uspješno je dodan.

U sustavu Windows 7 pojavljuje se ovo upozorenje. o tome jeste li sigurni da želite instalirati ovaj upravljački program (u sustavu Windows 10 x64 1803 takav skočni prozor se ne pojavljuje). Klikom na "instalirati", instalirate upravljački program u sustav.

Ako iz nekog razloga upravljački program nije instaliran, datoteka sadrži detaljan dnevnik instalacije upravljačkog programa C: \ Windows\ inf\ setupapi.dev.dnevnik. Ovaj će vam dnevnik omogućiti da dobijete detaljnije informacije o pogrešci instalacije. U većini slučajeva dolazi do pogreške "Provjera potpisa provjere vozačkog paketa" - najvjerojatnije to znači da vozačka potvrda nije dodana pouzdanim certifikatima.

Ako je instalacija upravljačkog programa bila uspješna, u datoteci setupapi.dev.log pojavit će se sljedeći redovi:

>>> [Instalacija uređaja (DiInstallDriver) - C: \ WINDOWS \ System32 \ DriverStore \ FileRepository \ xg20gr.inf_amd64_c5955181485ee80a \ xg20gr.inf] >>> Početak odjeljka 2018/07/22 23: 32: 57.015 cmd: Pnputil -i ac: \ DriverCert \ xg \ xg20gr.inf ndv: Zastave: 0x00000000 ndv: INF staza: 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: Stil kopiranja: 0x00000000 inf: Pisač za trgovinu vozača: C: \ WINDOWS \ System32 \ DriverStore \ FileRepository \ xg20d14g_f5g14g_f5g14g_in555_595_fm_f5g14g_in559_fr_mg5f_m55f_m55f_m55f_m55f_m5f5f_m55fr.fc Inf put: C: \ WINDOWS \ INF \ oem23.inf inf: SetupCopyOEMInf izlaz (0x00000000) 23: 32: 57.077 <<<  Section end 2018/07/22 23:32:57.155 <<<  [Exit status: SUCCESS]

Kao što vidite, za instaliranje upravljačkog programa s potpisom nismo trebali ni onemogućiti provjeru digitalnog potpisa upravljačkih programa pomoću bcdedit.exe, kao što je opisano ovdje (naredbe bcdedit.exe / postaviopterećenja DISABLE_INTEGRITY_CHECKS i bcdedit.exe / postavi testiranje uključeno).