Khắc phục lỗi singnature validation options windows 10

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.). 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: toolsdrv1. Hãy thử cài đặt trình điều khiển bằng cách thêm nó vào cửa hàng trình điều khiển Windows có tích hợp sẵn pnputil:
Pnputil –a c:toolsdrv1xg20gr.inf

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 can’t verify the publisher of this driver software.

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:

Processing inf: xg20gr.inf
Adding the driver package failed: The third-party INF does not contain digital signature information.

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

Khắc phục lỗi singnature validation options windows 10

The third-party INF does not contain digital signature information.

Khắc phục lỗi singnature validation options windows 10

Hãy cố gắng ký trình điều khiển 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:

  • Tạo Self-Signed Driver Certificate
  • Tạo tệp danh mục (CAT) để ký Driver Package
  • Mở Driver Package bằng Self-Signed Certificate
  • Cài đặt Self-Signed Driver trên Windows
  • Driver chế độ người dùng và chế độ hạt nhân trong Windows

Tạo Self-Signed Driver Certificate

Tạo một thư mục C: DriverCert tại 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ý với 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 CodeSignCert -CertStoreLocation cert: LocalMachineMy -not 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 [email protected] -Force –AsPlainText
Export-PfxCertificate -Cert $cert -FilePath C:DriverCertmyDrivers.pfx -Password $CertPassword

Khắc phục lỗi singnature validation options windows 10

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:DriverCertdrivecert.cer
Import-Certificate -CertStoreLocation Cert:LocalMachineAuthRoot -FilePath $certFile.FullName
Import-Certificate -CertStoreLocation Cert:LocalMachineTrustedPublisher -FilePath $certFile.FullName

Trong các phiên bản Windows trước, bạn phải sử dụng makecert.exe 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 SDKsWindowsv7.1bin

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

makecert -r -sv C:DriverCertmyDrivers.pvk -n CN=”WinOSHub” C:DriverCertmyDrivers.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. 

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:DriverCertmyDrivers.cer C:DriverCertmyDrivers.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:DriverCertmyDrivers.pvk -pi [email protected] -spc C:DriverCertmyDrivers.spc -pfx C:DriverCertmyDrivers.pfx -po [email protected]

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

certmgr.exe -add C:DriverCertmyDrivers.cer -s -r localMachine ROOT
certmgr.exe -add C:DriverCertmyDrivers.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 sử dụng Chính sách Nhóm trong miền AD.

Mở phần đính kèm 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.

Khắc phục lỗi singnature validation options windows 10

Ghi chú. 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à không giới hạn (hoặc chữ ký cũ có hiệu lực trong dấu thời gian được chỉ định).

Tạo tệp danh mục (CAT) để ký Driver Package

Tạo thư mục C:DriverCertxg20 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:toolsdrv1). Đả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:DriverCertxg
xcopy c:toolsdrv1 C:DriverCertxg /i /c /k /e /r /y

Đi tới thư mục:

cd C:Program Files (x86)Windows Kits10bin10.0.22000.0×86

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. Các inf2cat.exe (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 /driver:”C:DriverCertxg20″ /os:7_X64 /verbose

Khắc phục lỗi singnature validation options windows 10

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

Signability test complete.

Catalog generation complete.

Ghi chú. Trong trường hợp của tôi, lệnh Inf2Cat.exe trả về lỗi:

Signability test failed.
Errors:
22.9.7: DriverVer set to incorrect date (must be postdated to 4/21/2009 for newest OS) in hdx861a.inf

Khắc phục lỗi singnature validation options windows 10

Để 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

Khắc phục lỗi singnature validation options windows 10

Nếu bạn gặp lỗi Missing AMD64 CatalogFile entry (cho x64) hoặc Missing 32-bit CatalogFile entrysau đó thêm dòng CatalogFile = xg20gr.cat vào [Version] của tệp .inf.

Mở Driver Package bằng Self-Signed Certificate

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

cd “C:Program Files (x86)Windows Kits10bin10.0.22000.0×64”

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:DriverCertmyDrivers.pfx /p [email protected] /t http://timestamp.verisign.com/scripts/timstamp.dll /v C:DriverCertxg20xg20gr.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:

SignTool Error: No file digest algorithm specified. Please specify the digest algorithm with the /fd flag. Using /fd SHA256 is recommended and more secure than SHA1. Calling signtool with /fd sha1 is equivalent to the previous behavior. In order to select the hash algorithm used in the signing certificate's signature, use the /fd certHash option.

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

signtool sign /tr http://timestamp.digicert.com /td SHA256 /v /f C:DriverCertmyDrivers.pfx /p [email protected] “C:DriverCertxgxg20gr.cat”

Khắc phục lỗi singnature validation options windows 10

Nếu lệnh trả về lỗi SignTool Error: An unexpected internal error has occurredhoặc Error information: SignerTimeStamp() failed. (-2147012865/0x80072eff), hãy thử một URL máy chủ dấu thời gian khác. Hãy thử bất kỳ danh sách nào:

http://timestamp.comodoca.com/authenticode
http://timestamp.globalsign.com/scripts/timstamp.dll
http://timestamp.verisign.com/scripts/timstamp.dll
http://tsa.starfieldtech.com
http://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:

Successfully signed: C:DriverCertxgxg20gr.cat
Number of files successfully Signed: 1

Chữ ký số của trình điều khiển được chứa 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:DriverCertxgxg20gr.cat

Khắc phục lỗi singnature validation options windows 10

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 Digital Signatures.

Khắc phục lỗi singnature validation options windows 10

Nếu chứng chỉ không đáng 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:

SignTool Error: A certificate chain processed, but terminated in a root certificate which is not trusted by the trust provider.

Tệp CAT chứa chữ ký số (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ố 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:DriverCertxg20xg20gr.inf

Bây giờ 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.

Successfully installed the driver on a device on the system.
Driver package added successfully.

Khắc phục lỗi singnature validation options windows 10

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

Would you like to install this device software?

Nhấp chuột Install để cài đặt gói trình điều khiển trên Windows.

Khắc phục lỗi singnature validation options windows 10

Nếu vì lý do nào đó mà trình điều khiển không được cài đặt, thì một nhật ký cài đặt trình điều khiển chi tiết sẽ được chứa trong tệp C:Windowsinfsetupapi.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ó một lỗi Driver package failed signature validation. Nhiều khả năng điều này có nghĩa là chứng chỉ của người lái xe không được thêm vào kho chứng chỉ đáng tin cậy.

Khắc phục lỗi singnature validation options windows 10

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

>>>  [Device Install (DiInstallDriver) - C:WINDOWSSystem32DriverStoreFileRepositoryxg20gr.inf_amd64_c5955181214aa12bxg20gr.inf]
>>>  Section start 2018/07/22 23:32:57.015
cmd: Pnputil  -i -a c:DriverCertxgxg20gr.inf
ndv: Flags: 0x00000000
ndv: INF path: C:WINDOWSSystem32DriverStoreFileRepositoryxg20gr.inf_amd64_c5955181214aa12bxg20gr.inf
inf: {SetupCopyOEMInf: C:WINDOWSSystem32DriverStoreFileRepositoryxg20gr.inf_amd64_c5955181214aa12bxg20gr.inf} 13:23:37.046
inf:      Copy style: 0x00000000
inf:      Driver Store Path: C:WINDOWSSystem32DriverStoreFileRepositoryxg20gr.inf_amd64_c5955181214aa12bxg20gr.inf
inf:      Published Inf Path: C:WINDOWSINFoem23.inf
inf: {SetupCopyOEMInf exit (0x00000000)} 13:23:37.077
<<<  Section end 2018/07/22 13:23:37.155
<<<  [Exit status: SUCCESS]

Driver chế độ người dùng và chế độ hạt 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 với Khởi động an toàn được bật với lỗi:

Event ID: 7000
ERROR_DRIVER_BLOCKED
1275 (0x4FB)
This driver has been blocked from loading.

Khắc phục lỗi singnature validation options windows 10

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

Khắc phục lỗi singnature validation options windows 10

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.

SignTool Error: Signing Cert does not chain to a Microsoft Code Verification Root.

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ế độ hạt nhân, bạn sẽ phải tắt xác minh chữ ký số và khởi động Windows ở chế độ kiểm tra bằng các lệnh bcdedit.exe:
bcdedit.exe /set /nointegritychecks on
bcdedit.exe /set testsigning ON

Đó là tất cả nội dung của bài viết, hy vọng chúng tôi đã giúp được bạn trong vấn đề mà bạn đang phải đối mặt. Nếu thấy bài viết hữu ích, hãy like và chia sẻ ủng hộ website Heyadvice. Nếu bạn có bất kỳ thắc mắc hay đóng góp nào hãy cho chúng tôi biết thêm ở phía bên dưới phần bình luận.