Computer >> Máy Tính >  >> Hệ thống >> Windows 7

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Theo mặc định, tất cả các phiên bản Windows 64-bit đều ngăn cài đặt trình điều khiển thiết bị không được ký bằng chữ ký số hợp lệ. Trình điều khiển chưa được ký sẽ bị hệ điều hành chặn. Chữ ký kỹ thuật số đảm bảo rằng trình điều khiển đã được phát hành bởi nhà phát triển hoặc nhà cung cấp đáng tin cậy và mã của nó không bị sửa đổi.

Có một số cách để tắt xác minh chữ ký trình điều khiển cho các trình điều khiển chưa được ký trong Windows (sử dụng GPO, chế độ khởi động thử nghiệm, v.v.). Hôm nay chúng tôi sẽ hướng dẫn cách ký bất kỳ trình điều khiển chưa ký nào cho Windows x64 (hướng dẫn áp dụng cho Windows 11, 10, 8.1 và 7).

Nội dung:

  • Tạo Chứng chỉ Người lái xe Tự ký
  • Tạo tệp danh mục (CAT) để ký gói trình điều khiển
  • Đăng ký Gói tài xế bằng Chứng chỉ tự ký
  • Cài đặt trình điều khiển tự ký trên Windows
  • Trình điều khiển chế độ người dùng và chế độ hạt nhân trong Windows

Giả sử bạn có một trình điều khiển thiết bị chưa ký nhất định (không có chữ ký số) cho Windows 10 x64. Trong ví dụ này, nó là trình điều khiển cho một cạc đồ họa khá cũ. Tệp lưu trữ có trình điều khiển cho phiên bản Windows của bạn đã được tải xuống từ trang web của nhà cung cấp (tôi chỉ có thể tìm thấy phiên bản trình điều khiển video dành cho Windows Vista x64) và nội dung của nó đã được trích xuất vào c:\ tools \ drv1 \ . Hãy thử cài đặt trình điều khiển bằng cách thêm trình điều khiển đó vào cửa hàng trình điều khiển Windows với pnputil tích hợp sẵn công cụ:
Pnputil –a c:\ tools \ drv1 \ xg20gr.inf

Lưu ý . Lệnh này và tất cả các lệnh tiếp theo phải được chạy trong dấu nhắc lệnh với tư cách quản trị viên.

Trong khi cài đặt trình điều khiển, Windows 7 hiển thị cảnh báo rằng hệ điều hành không thể xác minh chữ ký số của trình điều khiển này:

 Windows không thể xác minh nhà xuất bản của phần mềm trình điều khiển này. 

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Trong Windows 10 (21H2) cảnh báo này không xuất hiện, nhưng một lỗi xuất hiện trong bảng điều khiển:

 Xử lý thông tin:xg20gr.inf Thêm gói trình điều khiển không thành công:INF của bên thứ ba không chứa thông tin chữ ký số. 

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Nếu bạn nhấp chuột phải vào tệp trình điều khiển inf và chọn Cài đặt khi cài đặt trình điều khiển từ File Explorer, bạn gặp lỗi:

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

 INF của bên thứ ba không chứa thông tin chữ ký điện tử. 

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Hãy cố gắng ký tài xế này bằng chứng chỉ tự ký.

Để tạo chữ ký và ký vào trình điều khiển, bạn cần tải xuống và cài đặt các công cụ phát triển ứng dụng Windows sau:

  • SDK Windows (Bộ phát triển phần mềm) hoặc Microsoft Visual Studio 2005+ cho phiên bản Windows của bạn. Cài đặt Công cụ ký SDK Windows cho Máy tính để bàn gói chứa signtool.exe ; Cách ký trình điều khiển thiết bị chưa được ký trong Windows?
  • Bộ trình điều khiển Windows (WDK) - https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk
Mẹo . Trước khi cài đặt các công cụ này, hãy đảm bảo rằng .NET Framework 4 được cài đặt trên máy tính của bạn.

Tạo chứng chỉ trình điều khiển tự ký

Tạo thư mục C:\ DriverCert ở thư mục gốc của ổ đĩa hệ thống.

Bạn có thể sử dụng lệnh ghép ngắn New-SelfSifgnedCertificate PowerShell để tạo chứng chỉ ký mã. Trong ví dụ này, chúng tôi sẽ tạo một chứng chỉ tự ký có thời hạn hiệu lực là 3 năm.

$ todaydate =Get-Date
$ add3year =$ todaydate.AddYears (3)
$ cert =New-SelfSignedCertificate -Subject "WOSHUB" -Type CodeSignedCert -CertStoreLocation cert:\ LocalMachine \ My - sau $ add3year

Sau đó, bạn cần xuất chứng chỉ này sang tệp pfx với mật khẩu:

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

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Vì chứng chỉ chúng tôi tạo là chứng chỉ tự ký nên Windows không tin tưởng vào chứng chỉ đó theo mặc định. Khi bạn kiểm tra kho chứng chỉ bằng tiện ích Sigcheck, chứng chỉ này sẽ được hiển thị là không đáng tin cậy, vì nó không được liệt kê trong danh sách Chứng chỉ gốc đáng tin cậy của Microsoft (danh sách này cần được cập nhật định kỳ).

Bây giờ bạn cần thêm chứng chỉ vào cửa hàng Trusted Root và chứng chỉ Trusted Publisher:

$ certFile =Export-Certificate -Cert $ cert -FilePath C:\ DriverCert \ drivecert.cer
Import-Certificate -CertStoreLocation Cert:\ LocalMachine \ AuthRoot -FilePath $ certFile.FullName
Import- Chứng chỉ -CertStoreLocation Cert:\ LocalMachine \ TrustedPublisher -FilePath $ certFile.FullName

Trong các phiên bản Windows trước, bạn phải sử dụng makecert.exe công cụ từ Bộ phát triển phần mềm Windows (SDK) để tạo chứng chỉ tự ký. Trong trường hợp này, các lệnh để tạo chứng chỉ sẽ giống như sau:

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

Tạo chứng chỉ tự ký và khóa cá nhân, chẳng hạn như được cấp cho công ty WinOSHub:

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

Trong quá trình tạo chứng chỉ, công cụ sẽ nhắc bạn chỉ định mật khẩu cho khóa. Hãy để nó là P @ ss0wrd .

Tạo khóa công khai cho chứng chỉ nhà xuất bản (PKSC) mà chúng tôi đã tạo trước đó:

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

Kết hợp khóa công khai (.spc) và khóa riêng tư (.pvk) trong một tệp chứng chỉ duy nhất có định dạng Trao đổi thông tin cá nhân (.pfx):

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

Thêm chứng chỉ vào đáng tin cậy:

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

Bạn có thể triển khai tập trung chứng chỉ này cho các máy khách bằng Chính sách Nhóm trong miền AD.

Mở phần đính vào quản lý chứng chỉ cục bộ của máy ( certlm.msc ) và xác minh rằng chứng chỉ của bạn nằm trong Nhà xuất bản đáng tin cậy và Tổ chức phát hành chứng chỉ gốc đáng tin cậy.

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Lưu ý . Mặc dù chứng chỉ có thời hạn hiệu lực giới hạn, nhưng chứng chỉ CodeSign hết hạn có nghĩa là bạn không thể tạo chữ ký mới. Hiệu lực của trình điều khiển đã được ký bởi chứng chỉ này là vô hạn (hoặc chữ ký cũ có hiệu lực trong dấu thời gian đã chỉ định).

Tạo tệp danh mục (CAT) để ký gói trình điều khiển

Tạo thư mục C:\ DriverCert \ xg20 và sao chép tất cả các tệp từ thư mục mà trình điều khiển từ kho lưu trữ đã được giải nén ban đầu ( c:\ tools \ drv1 \ ). Đảm bảo rằng có các tệp có phần mở rộng .sys .inf trong số các tệp này (trong trường hợp của chúng tôi, chúng là xg20grp.sys và xg20gr.inf).

md C:\ DriverCert \ xg
xcopy c:\ tools \ drv1 \ C:\ DriverCert \ xg / i / c / k / e / r / y

Đi tới thư mục:

cd “C:\ Program Files (x86) \ Windows Kits \ 10 \ bin \ 10.0.22000.0 \ x86”

Tạo tệp CAT (chứa thông tin về tất cả các tệp trong gói trình điều khiển) trên nền của tệp INF. inf2cat.exe công cụ (từ Bộ trình điều khiển Windows, WDK) cho phép bạn tạo tệp CAT cho nền tảng của mình:

inf2cat.exe / trình điều khiển:"C:\ DriverCert \ xg20" / os:7_X64 / verbose

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Để đảm bảo rằng quy trình đúng, hãy kiểm tra xem tệp C:\ DriverCert \ xg \ xg20gr.cat đã xuất hiện trong thư mục đích và có thông báo trong nhật ký:

 Kiểm tra khả năng ký kết hoàn tất. 

 Hoàn tất tạo danh mục. 
Lưu ý . Trong trường hợp của tôi, lệnh Inf2Cat.exe trả về lỗi:

 Kiểm tra khả năng ký không thành công. Lỗi:22.9.7:DriverVer được đặt thành ngày không chính xác (phải được cập nhật thành ngày 21/4/2009 đối với hệ điều hành mới nhất) trong \ hdx861a.inf 

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Để sửa lỗi, hãy tìm dòng có DriverVer =trong [Version] và thay thế nó bằng:

 DriverVer =05/01 / 2009,9,9,9,9 

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Nếu bạn gặp lỗi Thiếu mục nhập AMD64 CatalogFile (cho x64) hoặc Thiếu mục nhập CatalogFile 32-bit , sau đó thêm dòng CatalogFile =xg20gr.cat vào phần [Phiên bản] của tệp .inf.

Ký Gói Trình điều khiển bằng Chứng chỉ Tự ký

Đi tới thư mục sau:

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

Ký gói trình điều khiển (tập hợp các tệp) bằng chứng chỉ bạn đã tạo trước đó bằng cách sử dụng Verisign làm dịch vụ dấu thời gian. Lệnh sau sẽ ký tệp CAT bằng chữ ký số sử dụng chứng chỉ được lưu trữ trong tệp .pfx được bảo vệ bằng mật khẩu:

signtool sign / f C:\ DriverCert \ myDrivers.pfx / p P @ ss0wrd / t https://timestamp.verisign.com/scripts/timstamp.dll / v C:\ DriverCert \ xg20 \ xg20gr.cat

Trên các phiên bản Windows 10 và Windows 11 hiện đại, việc chạy lệnh này sẽ dẫn đến lỗi:

 Lỗi SignTool:Không có thuật toán tổng hợp tệp nào được chỉ định. Vui lòng chỉ định thuật toán thông báo với cờ / fd. Nên sử dụng / fd SHA256 và an toàn hơn SHA1. Việc gọi signtool với / fd sha1 tương đương với hành vi trước đó. Để chọn thuật toán băm được sử dụng trong chữ ký của chứng chỉ ký, hãy sử dụng tùy chọn / fd certHash. 

Bạn cần sử dụng một lệnh khác:

signtool sign / tr https://timestamp.digicert.com / td SHA256 / v / f C:\ DriverCert \ myDrivers.pfx / p P @ ss0wrd "C:\ DriverCert \ xg \ xg20gr.cat"

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Nếu lệnh trả về lỗi SignTool Error:Đã xảy ra lỗi nội bộ không mong muốn hoặc Thông tin lỗi:SignerTimeStamp () không thành công. (-2147012865 / 0x80072eff) , hãy thử một URL máy chủ dấu thời gian khác. Hãy thử bất kỳ trong số danh sách:

 https://timestamp.comodoca.com/authenticodehttps://timestamp.globalsign.com/scripts/timstamp.dllhttps://timestamp.verisign.com/scripts/timstamp.dllhttps://tsa.starfieldtech.comhttp ://www.startssl.com/timestamp 

Nếu tệp CAT được ký thành công, thông báo sau sẽ xuất hiện:

 Đã ký thành công:C:\ DriverCert \ xg \ xg20gr.catSố tệp đã ký thành công:1 

Chữ ký kỹ thuật số của trình điều khiển có trong tệp .cat được tham chiếu trong tệp .inf. Bạn có thể kiểm tra chữ ký số của trình điều khiển trong tệp cat bằng lệnh sau:

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

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Bạn cũng có thể xem thông tin về chứng chỉ trong thuộc tính của tệp CAT trên Chữ ký kỹ thuật số tab.

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Nếu chứng chỉ không được tin cậy (hoặc chưa được thêm vào Kho lưu trữ chứng chỉ gốc đáng tin cậy), thì lỗi sẽ xuất hiện khi chạy SignTool verify lệnh:

 Lỗi SignTool:Một chuỗi chứng chỉ được xử lý, nhưng kết thúc trong chứng chỉ gốc không được nhà cung cấp tin cậy tin cậy. 
Tệp CAT chứa chữ ký điện tử (dấu ngón tay cái) của tất cả các tệp có trong thư mục trình điều khiển (các tệp được liệt kê trong tệp INF trong CopyFiles tiết diện). Nếu bất kỳ tệp nào trong số này đã bị thay đổi, thì tổng tổng của tệp sẽ không khớp với dữ liệu trong tệp CAT và kết quả là quá trình cài đặt trình điều khiển như vậy sẽ không thành công.

Cài đặt trình điều khiển tự ký trên Windows

Cố gắng cài đặt lại trình điều khiển mà chúng tôi đã ký bằng lệnh:

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

Giờ đây, bạn sẽ không thấy cảnh báo về việc thiếu chữ ký số của trình điều khiển.

Đã cài đặt thành công trình điều khiển trên một thiết bị trong hệ thống. Đã thêm thành công gói trình điều khiển
.

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Cảnh báo sau xuất hiện trong Windows 10 và 11:

 Bạn có muốn cài đặt phần mềm thiết bị này không? 

Nhấp vào “ Cài đặt” để cài đặt gói trình điều khiển trên Windows.

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Nếu vì lý do nào đó mà trình điều khiển chưa được cài đặt, thì nhật ký cài đặt trình điều khiển chi tiết được chứa trong tệp C:\ Windows \ inf \ setupapi.dev.log . Tệp nhật ký này cho phép bạn có thêm thông tin về các lỗi cài đặt trình điều khiển. Trong hầu hết các trường hợp, có “ Xác thực chữ ký không thành công của gói trình điều khiển " lỗi. Nhiều khả năng điều này có nghĩa là chứng chỉ của trình điều khiển không được thêm vào kho lưu trữ chứng chỉ đáng tin cậy.

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Nếu cài đặt trình điều khiển thành công, setupapi.dev.log tệp phải chứa các dòng sau:

>>> [Cài đặt thiết bị (DiInstallDriver) - C:\ WINDOWS \ System32 \ DriverStore \ FileRepository \ xg20gr.inf_amd64_c5955181214aa12b \ xg20gr.inf]>>> Phần bắt đầu 2018/07/22 23:32:57.015cmd:Pnputil -i -ac:\ DriverCert \ xg \ xg20gr.infndv:Cờ:0x00000000ndv:Đường dẫn INF:C:\ WINDOWS \ System32 \ DriverStore \ FileRepository \ xg20gr.inf_amd64_c5955181214aa12b \ xg20gr.infinf:\ System \ WINDOWS32 DriverStore \ FileRepository \ xg20gr.inf_amd64_c5955181214aa12b \ xg20gr.inf} 13:23:37.046inf:Kiểu sao chép:0x00000000inf:Đường dẫn lưu trữ trình điều khiển:C:\ WINDOWS \ System32 \ DriverStore \ FileRepository \ xg20gr. :C:\ WINDOWS \ INF \ oem23.infinf:{SetupCopyOEMInf exit (0x00000000)} 13:23:37.077 << 

Trình điều khiển Chế độ Người dùng và Chế độ Nhân trong Windows

Hãy để tôi nhắc nhở bạn rằng trong Windows, trình điều khiển có thể được thực thi ở chế độ hạt nhân hoặc chế độ người dùng. Trình điều khiển chế độ hạt nhân được ký theo cách này sẽ không tải khi Windows khởi động trên thiết bị UEFI có bật Khởi động an toàn với lỗi:

 ID sự kiện:7000ERROR_DRIVER_BLOCKED1275 (0x4FB) Trình điều khiển này đã bị chặn tải. 

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Bạn có thể kiểm tra xem chế độ Khởi động An toàn có được bật hay không bằng cách sử dụng lệnh PowerShell:
Confirm-SecureBootUEFI

Cách ký trình điều khiển thiết bị chưa được ký trong Windows?

Tất cả các trình điều khiển chế độ hạt nhân được tải có bật SecureBoot phải được ký trong quá trình chứng nhận của Microsoft (WHQL - Phòng thí nghiệm Chất lượng Phần cứng Windows). Lý do là khi hạt nhân được tải, UEFI không thể xác minh các chứng chỉ trong kho lưu trữ chứng chỉ máy cục bộ của Windows.

 Lỗi SignTool:Signing Cert không liên kết với Gốc xác minh mã của Microsoft. 

Microsoft yêu cầu chứng nhận trình điều khiển bên thứ ba bắt buộc theo Chương trình tương thích phần cứng của Windows bắt đầu với Windows 10 1607.

Trình điều khiển chế độ người dùng tự ký (thường là máy in, máy quét, máy vẽ, v.v.) sẽ hoạt động ngay cả khi bật SecureBoot.
Đối với trình điều khiển chế độ nhân, bạn sẽ phải tắt xác minh chữ ký số và khởi động Windows ở chế độ thử nghiệm với các lệnh bcdedit.exe:
bcdedit.exe / set / nointegritychecks on
bcdedit.exe / set testsign ON