Semua versi 64 bit Windows, dimulai dengan Windows 7, secara default melarang pemasangan driver perangkat yang tidak ditandatangani dengan tanda tangan digital yang benar. Driver yang tidak ditandai diblokir oleh sistem operasi. Kehadiran tanda tangan digital menjamin (sampai batas tertentu) bahwa driver dilepaskan oleh pengembang atau vendor tertentu, dan kode tidak diubah setelah ditandatangani.
Pada Windows 10/7 x64, ada beberapa cara untuk menonaktifkan verifikasi tanda tangan digital driver yang diinstal: menggunakan Kebijakan Grup atau mode boot sistem uji (untuk detail lebih lanjut, lihat artikel Menonaktifkan verifikasi tanda tangan digital untuk menginstal driver yang tidak ditandatangani pada Windows).
Hari ini kami menunjukkan bagaimana Anda bisa tandatangani sendiri driver yang tidak ditandatangani untuk versi 64 bit Windows 10 atau Windows 7.
Misalkan kita memiliki driver untuk beberapa perangkat untuk x64 Windows 10 atau Windows 7 yang tidak memiliki tanda tangan digital (dalam contoh kita, ini akan menjadi driver untuk kartu video yang agak lama). Arsip driver untuk versi Windows kami (saya berhasil menemukan driver untuk Windows Vista x64) diunduh dari situs web pabrikan dan isinya dibongkar di direktori c: \ tools \ drv1 \. Mari kita coba menginstal driver dengan menambahkannya ke repositori driver Windows menggunakan utilitas standar pnputil.
Pnputil -a "C: \ tools \ drv1 \ xg20gr.inf"
Selama instalasi, Windows 7 akan menampilkan peringatan bahwa sistem tidak dapat memverifikasi tanda tangan digital driver ini.
Di Windows 10, peringatan seperti itu bahkan tidak muncul, dan peringatan muncul di konsol bahwa tidak ada informasi tanda tangan digital dalam file INF pihak ketiga.
Saat mencoba menginstal driver dari Windows Explorer, jika Anda mengklik RMB pada file inf driver dan pilih Instal / Instal kesalahan akan muncul:
INF pihak ketiga tidak mengandung informasi tanda tangan digital.
INF pihak ketiga tidak mengandung informasi tanda tangan.
Mari kita coba masuk driver ini menggunakan sertifikat yang ditandatangani sendiri.
Konten:
- Utilitas diperlukan untuk menandatangani driver
- Buat sertifikat dan kunci pribadi yang ditandatangani sendiri
- Hasilkan file driver CAT
- Kami menandatangani driver dengan sertifikat yang ditandatangani sendiri
- Instalasi Sertifikat
- Menginstal driver yang disertifikasi oleh sertifikat yang ditandatangani sendiri
Utilitas diperlukan untuk menandatangani driver
Agar berfungsi, kita perlu mengunduh dan menginstal (dengan pengaturan default) alat pengembang aplikasi berikut untuk Windows.
- Windows SDK (atau Microsoft Visual Studio 2005 atau lebih tinggi) untuk versi Windows Anda - paket-paket ini termasuk alat Penandatanganan SDK Windows untuk Desktop, yang mencakup utilitas yang kami butuhkan - signtool.exe;
- Windows Driver Kit 7.1.0 - ISO Image GRMWDK_EN_7600_1.ISO ukurannya 649 Mb
Buat sertifikat dan kunci pribadi yang ditandatangani sendiri
Buat direktori C: \ DriverCert di root disk.
Buka baris perintah dan pergi ke direktori berikut:
cd C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v7.1 \ bin
Buat sertifikat yang ditandatangani sendiri dan kunci pribadi yang dikeluarkan, misalnya, untuk Winitpro:
makecert -r -sv C: \ DriverCert \ myDrivers.pvk -n CN = "Winitpro" C: \ DriverCert \ MyDrivers.cer
Selama pembuatan, utilitas akan meminta Anda menentukan kata sandi untuk kunci, biarkan saja P@ss0wrd.
Berdasarkan sertifikat yang dihasilkan, buat kunci publik untuk sertifikat penerbit perangkat lunak (PKCS).
cert2spc C: \ DriverCert \ myDrivers.cer C: \ DriverCert \ myDrivers.spc
Gabungkan kunci publik (.spc) dan kunci pribadi (.pvk) dalam satu file sertifikat Pertukaran Informasi Pribadi (.pfx).
pvk2pfx -pvk C: \ DriverCert \ myDrivers.pvk -pi P @ ss0wrd -spc C: \ DriverCert \ myDrivers.spc -pfx C: \ DriverCert \ myDrivers.pfx -po P @ ss0wrd
$ cert = Baru-SelfSignedCertificate -Subyek "Winitpro" -Type CodeSigningCert -CertStoreLocation cert: \ LocalMachine \ My
Maka Anda perlu mengekspor sertifikat ini ke file pfx dengan kata sandi:
$ CertPassword = ConvertTo-SecureString -String “P @ ss0wrd” -Force -AsPlainText
Ekspor-PfxCertificate -Cert $ cert -FilePath C: \ DriverCert \ myDrivers.pfx -Password $ CertPassword
Kiat. Meskipun sertifikat memiliki periode validitas terbatas, berakhirnya sertifikat CodeSigning berarti Anda tidak dapat membuat tanda tangan baru. Validitas driver yang sudah ditandatangani dengan sertifikat ini tidak terbatas (atau tanda tangan lama berlaku untuk cap waktu yang ditentukan).
Hasilkan file driver CAT
Buat direktori C: \Drivercert\xg dan salin ke dalamnya semua file dari direktori di mana arsip dengan driver awalnya dibuka (c: \ tools \ drv1 \). Pastikan bahwa di antara file ada file dengan ekstensi .sys dan .inf (dalam kasus kami xg20grp.sys dan xg20gr).
Ayo buka direktori:
cd C: \ WinDDK \ 7600.16385.1 \ bin \ selfsign
Berdasarkan file inf, menggunakan utilitas inf2cat.exe (disertakan dengan Windows Driver Kit -WDK), kami akan membuat file cat untuk platform kami (berisi informasi tentang semua file paket driver).
inf2cat.exe / driver: "C: \ DriverCert \ xg" / os: 7_X64 / verbose
Untuk memastikan bahwa prosedurnya benar, periksa apakah pesan-pesan itu ada dalam log:
Tes signabilitas selesai
.
danPembuatan katalog selesai
.
Tes signabilitas gagal.
Kesalahan:
22.9.7: DriverVer diatur ke tanggal yang salah (harus dipundurkan tanggal 4/21/2009 untuk OS terbaru) di \ hdx861a.inf
Untuk memperbaiki kesalahan, di bagian [Versi], cari baris dengan DriverVer = dan ganti dengan:
DriverVer = 05/01 / 2009,9.9.9.9.9
Setelah menjalankan perintah, file g20gr.cat harus diperbarui di direktori driver
Kami menandatangani driver dengan sertifikat yang ditandatangani sendiri
Pergi ke direktori:
cd "C: \ Program Files (x86) \ Windows Kits \ 10 \ bin \ 10.0.17134.0 \ x64"
Kami akan menandatangani set file driver dengan sertifikat yang kami buat, sebagai layanan cap waktu (time stamp) kami akan menggunakan sumber daya Globalsign. Perintah berikut akan secara digital menandatangani file CAT menggunakan sertifikat yang disimpan dalam file PFX yang dilindungi kata sandi.
signtool sign / f C: \ DriverCert \ myDrivers.pfx / p P @ ss0wrd / t http://timestamp.globalsign.com/scripts/timstamp.dll / v "C: \ DriverCert \ xg \ xg20gr.cat"
Jika file berhasil ditandatangani, berikut ini akan muncul:
Berhasil menandatangani: C: \ DriverCert \ xg \ xg20gr.cat
Jumlah file berhasil Ditandatangani: 1
Verifikasi SignTool / v / pa c: \ DriverCert \ xg \ xg20gr.cat
Lido di properti file pada tab Tanda Tangan Digital.
File CAT berisi tanda tangan digital (cap jempol) dari semua file yang ada di direktori driver (file yang tercantum dalam file INF di bagian Copyfiles) Jika ada file-file ini yang telah dimodifikasi, checksum dari file tidak akan bertepatan dengan data dalam file CAT, akibatnya, instalasi driver seperti itu akan gagal.
Instalasi Sertifikat
Karena sertifikat yang kami buat ditandatangani sendiri, sistem tidak mempercayainya secara default. Tambahkan sertifikat kami ke toko sertifikat lokal. Ini dapat dilakukan dengan menggunakan perintah:
certmgr.exe -tambahkan C: \ DriverCert \ myDrivers.cer -s -r localMachine ROOT
certmgr.exe -tambahkan C: \ DriverCert \ myDrivers.cer -s -r localMachine TRUSTEDPUBLISHER
Atau dari wizard grafis untuk menambahkan sertifikat (sertifikat harus ditempatkan di penyimpanan Tepercaya Penerbit dan Tepercaya Rooting Sertifikasi Otoritas mesin lokal) Dalam domain, Anda dapat mendistribusikan sertifikat ini secara terpusat ke workstation menggunakan Kebijakan Grup.
Catatan. Anda dapat memeriksa ketersediaan sertifikat yang kami buat di yang tepercaya dengan membuka snap-in manajemen sertifikat (certmgr.msc) dan memeriksa keberadaan sertifikat yang kami buat (diterbitkan untuk winitpro) di toko yang sesuai.Catatan. Ketika memeriksa toko sertifikat menggunakan utilitas Sigcheck, sertifikat ini akan ditampilkan sebagai tidak tepercaya, karena itu tidak ada dalam daftar dengan daftar sertifikat root Microsoft (daftar ini perlu diperbarui secara berkala).
Menginstal driver yang disertifikasi oleh sertifikat yang ditandatangani sendiri
Mari kita coba instal driver yang kita tandatangani lagi dengan menjalankan perintah:
Pnputil -i -a C: \ DriverCert \ xg20 \ xg20gr.inf
Sekarang, selama instalasi driver, jendela peringatan tentang tanda tangan digital yang hilang dari driver tidak akan muncul.
Driver berhasil diinstal pada perangkat di sistem.
Paket driver berhasil ditambahkan.
Di Windows 7, peringatan ini muncul. tentang apakah Anda yakin ingin menginstal driver ini (pada Windows 10 x64 1803 jendela pop-up seperti itu tidak muncul). Dengan mengklik "Instal", Anda menginstal driver di sistem.
Jika karena alasan tertentu driver tidak diinstal, log instalasi driver rinci terkandung dalam file C: \ Windows\ inf\ setupapi.dev.log. Log ini akan memungkinkan Anda untuk mendapatkan informasi lebih rinci tentang kesalahan instalasi. Dalam kebanyakan kasus, kesalahan "Paket driver gagal validasi tanda tangan" terjadi - kemungkinan besar ini berarti bahwa sertifikat driver tidak ditambahkan ke sertifikat tepercaya.
Jika instalasi driver berhasil, baris berikut akan muncul di file setupapi.dev.log:
>>> [Instalasi Perangkat (DiInstallDriver) - C: \ WINDOWS \ System32 \ DriverStore \ FileRepository \ xg20gr.inf_amd64_c5955181485ee80a \ xg20gr.inf] >>> Bagian awal 2018/07/22 23: 32: 57.015 cmd: Pnputil -i - ac: \ DriverCert \ xg \ xg20gr.inf ndv: Bendera: 0x00000000 ndv: jalur INF: C: \ WINDOWS \ System32 \ DriverStore \ FileRepository \ xg20gr.inf_amd64_c5955181485ee80a \ xg20gr.inf inf: IN: DriverStore \ FileRepository \ xg20gr.inf_amd64_c5955181485ee80a \ xg20gr.inf 23: 32: 57.046 inf: gaya salin: 0x00000000 inf: Driver Store Path: C: \ WINDOWS \ System32 \ DriverStore \ FileRepository \ xg2014532_dc5655inf_d5_5305.info Jalur Inf: C: \ WINDOWS \ INF \ oem23.inf inf: SetupCopyOEMInf keluar (0x00000000) 23: 32: 57.077 <<< Section end 2018/07/22 23:32:57.155 <<< [Exit status: SUCCESS]
Seperti yang Anda lihat, untuk menginstal driver yang ditandatangani sendiri, kami bahkan tidak harus menonaktifkan verifikasi tanda tangan digital driver menggunakan bcdedit.exe, seperti yang dijelaskan di sini (perintah bcdedit.exe / atur loadoptions DISABLE_INTEGRITY_CHECKS
dan bcdedit.exe / set testigning AKTIF
).