Windows 7, драйвер с цифровой подписью показывает предупреждение: Windows не может проверить издателя этого программного обеспечения драйвера

Я пытаюсь установить USB-драйвер Windows с простой структурой (содержащей только следующее содержимое:

  • приложение.инф,
  • app.cat
  • WdfCoInstaller01005.dll
  • WinUSBCoInstaller.dll

). Драйвер sha 256 подписан с использованием действительного стандартного сертификата для подписи кода в режиме ядра, выданного Digicert. Я мог видеть цифровую подпись в файле app.cat при просмотре свойств файла. Я пытаюсь установить драйвер с помощью install-shield на компьютере с 64-разрядной версией Windows 7 SP1 со всеми последними обновлениями (включая KB3033929). Он по-прежнему показывает предупреждение Windows не может проверить издателя этого драйвера.

Для устранения неполадок я попытался установить сертификат на целевой машине как один из ссылка на Stackoverflow предлагает. Все еще нет надежды.

Я использовал следующие команды в процессе создания файла .cat и подписания файла .cat. (Файла .sys нет)

Inf2Cat /driver:"C:\CodeSigning" /os:7_X64,7_X86

C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64>signtool.exe si
gn /v /ac "C:\CodeSigning\DigiCert High Assurance EV Root CA.crt"  /a /t ht
tp://timestamp.digicert.com  "C:\CodeSigning\Driver\app.cat"

ИЗМЕНИТЬ Добавление дополнительной информации.

Информация о цифровой подписи

Ошибка при установке драйвера

Я также пробовал подписывание Sha256 (ссылаясь на https://www.digicert.com/code-signing/driver-signing-in-windows-using-signtool.htm (раздел: Internet Explorer или Chrome для Windows)

signtool sign /v /ac "C:\path\DigiCert High Assurance EV Root CA.crt" /a /tr http://timestamp.digicert.com /td sha256 /fd sha256 "c:\path\to\FileToSign.cat"

Тем не менее я получаю ту же ошибку.

РЕДАКТИРОВАТЬ 2. Добавление источника файла Inf

Пожалуйста, обратитесь к источнику файла .inf ниже (может быть немного устаревшим).

[Version]
Signature = "$Windows NT$"
Class =XYZdevice
ClassGuid={ad769fbf-c592-4b8c-940a-6e3782a545e8}
Provider = %ProviderName%
DriverVer=10/13/2017,6.00.2064
CatalogFile=%MFGFILENAME%.cat

; ========== Manufacturer/Models sections ===========

[Manufacturer]
%ProviderName% = XYZInc,NTx86,NTamd64

[XYZInc.NTx86]
%USB\MyDevice.DeviceDesc% =USB_Install, USB\VID_1448&PID_4AC0&REV_0001

[XYZInc.NTamd64]
%USB\MyDevice.DeviceDesc% =USB_Install, USB\VID_1448&PID_4AC0&REV_0001

; =================== Installation ===================

[ClassInstall32]
AddReg=SampleClass_RegistryAdd

[SampleClass_RegistryAdd]
HKR,,,,%ClassName%


;[1]
[USB_Install]
Include=winusb.inf
Needs=WINUSB.NT

;[2]
[USB_Install.Services]
Include=winusb.inf
AddService=WinUSB,0x00000002,WinUSB_ServiceInstall

;[3]
[WinUSB_ServiceInstall]
DisplayName     = %WinUSB_SvcDesc%
ServiceType     = 1
StartType       = 3
ErrorControl    = 1
ServiceBinary   = %12%\WinUSB.sys

;[4]
[USB_Install.Wdf]
KmdfService=WINUSB, WinUsb_Install

[WinUSB_Install]
KmdfLibraryVersion=1.5

;[5]
[USB_Install.HW]
AddReg=Dev_AddReg

[Dev_AddReg]
HKR,,DeviceInterfaceGUIDs,0x10000,"{15630179-b622-4834-8ff7-9916b1446884}"

;[6]
[USB_Install.CoInstallers]
AddReg=CoInstallers_AddReg
CopyFiles=CoInstallers_CopyFiles

[CoInstallers_AddReg]
HKR,,CoInstallers32,0x00010000,"WdfCoInstaller01005.dll,WdfCoInstaller","WinUSBCoInstaller.dll"

[CoInstallers_CopyFiles]
WinUSBCoInstaller.dll
WdfCoInstaller01005.dll

[DestinationDirs]
CoInstallers_CopyFiles=11

; ================= Source Media Section =====================
;[7]

[SourceDisksNames]
1 = %DISK_NAME%,,,\i386
2 = %DISK_NAME%,,,\amd64

[SourceDisksFiles.x86]
WinUSBCoInstaller.dll=1
WdfCoInstaller01005.dll=1

[SourceDisksFiles.NTamd64]
WinUSBCoInstaller.dll=2
WdfCoInstaller01005.dll=2

; =================== Strings ===================

[Strings]
MFGFILENAME="XYZDevice"
ProviderName="XYZ Inc"
ClassName="XYZ device"
USB\MyDevice.DeviceDesc="XYZ"
WinUSB_SvcDesc="XYZ"
DISK_NAME="Drivers"

Я также проверил детали встречной подписи. Пожалуйста, обратитесь к изображению ниже.

  • Отпечаток сертификата, используемого для перекрестной подписи (отпечаток: 2f 25 13 af 39 92 db 0a 3f 79 70 9f f8 14 3b 3f 7b d2 d1 43 перекрестный сертификат для DigiCert High Assurance EV Root CA)
  • Отпечаток кросс-подписанного сертификата, который можно увидеть в свойствах подписанного файла: ‎40 01 91 47 5c 98 89 1d eb a1 04 af 47 09 1b 5e b6 d4 cb cb (не знаю, правильно это или нет)

введите здесь описание изображения

Пожалуйста помоги. Я потратил много времени на это и до сих пор безрезультатно. Любая помощь в этом будет действительно ценной.


person amesh    schedule 02.01.2018    source источник
comment
WinUSB поставляется с Windows 7, поэтому вы можете уменьшить размер пакета драйверов, не используя коустановщики. Ваш аргумент /ac выглядит подозрительно; Вы уверены, что это кросс-сертификат? Можешь кинуть ссылку где скачал. Было бы хорошо опубликовать скриншот ошибки, я не уверен, что это ошибка времени установки или нет. Кроме того, я написал большую статью, которая может быть вам полезна.   -  person David Grayson    schedule 02.01.2018
comment
На самом деле я не думаю, что вам нужно указывать перекрестный сертификат с аргументом /ac, потому что вы не подписываете драйвер режима ядра. Кроме того, какая часть вашего вызова signtool указывает, какой сертификат издателя использовать?   -  person David Grayson    schedule 02.01.2018
comment
Кроме того, вы должны использовать /fd sha256, поскольку SHA1 устарел, хотя я не думаю, что это решит вашу проблему здесь.   -  person David Grayson    schedule 02.01.2018
comment
@DavidGrayson, спасибо за ваши комментарии. Я пробовал из следующей документации Digicert. digicert.com/code-signing/ (раздел: Internet Explorer или Chrome для Windows).   -  person amesh    schedule 03.01.2018
comment
@DavidGrayson Я также пробовал версию подписи Sha256 signtool sign /v /ac "C:\path\DigiCert High Assurance EV Root CA.crt" /a /tr http://timestamp.digicert.com /td sha256 /fd sha256 "c:\path\to\FileToSign.cat" Тем не менее я получаю ту же ошибку.   -  person amesh    schedule 03.01.2018
comment
@DavidGrayson Я просмотрю вашу статью и узнаю больше об этом .. Спасибо ..   -  person amesh    schedule 03.01.2018
comment
Интересно, это ошибка InstallShield? Вы получаете такое же сообщение об ошибке, если поместите файл INF и CAT и все необходимые файлы в каталог и установите файл INF, щелкнув правой кнопкой мыши и выбрав «Установить»? Вам понадобится раздел DefaultInstall в файле INF (и не забудьте повторно подписать его после добавления).   -  person David Grayson    schedule 03.01.2018
comment
Водителю нужны две подписи. Один предоставлен вами, другой вы получаете от Microsoft WHQL после того, как они проверили ваш драйвер. Маленькая птичка говорит мне, что последний отсутствует.   -  person Hans Passant    schedule 03.01.2018