Разное

Программа для подписи драйверов: Как подписать драйвер Windows 10, 8.1 и Windows 7 x64 и x86

14.03.1987

Содержание

Как подписать драйвер Windows 10, 8.1 и Windows 7 x64 и x86

Windows 10, 8.1 и Windows 7 позволяют отключить обязательную проверку цифровой подписи драйверов и установить неподписанный драйвер, однако если в последних версиях ОС это нужно сделать на постоянной основе, изменение опций с помощью bcdedit не помогает. Однако, может помочь самостоятельная подпись драйвера и его последующая установка, о чем и поговорим.

В этой инструкции подробно о том, как самостоятельно подписать драйвер для Windows 10, 8.1 или Windows 7 x64 или 32-бит (x86) для последующей установки в системе на постоянной основе без отключения проверки цифровой подписи драйверов, избежав при этом ошибок наподобие «INF стороннего производителя не содержит информации о подписи».

Что потребуется для подписи драйвера

Для того, чтобы выполнить все описанные далее шаги, скачайте и установите следующие инструменты с сайта Майкрософт:

Из первого набора достаточно будет установить Tools, из второго (представляет собой ISO-образ с установщиком, с которого нужно запустить KitSetup.exe) — выбрать Build Environments и Tools.

Обратите внимание: это не последние версии наборов инструментов, но они в равной степени подойдут для самостоятельной подписи драйверов для последующей установки во всех ОС от Windows 10 до Windows 7, при этом в инструкции не потребуется вдаваться в некоторые дополнительные нюансы.

Процесс самостоятельной подписи драйвера

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

  1. Создайте в корне диска C какую-либо папку (так к ней проще будет обращаться в дальнейшем), например, C:\cert, где мы будем работать с сертификатами и драйверами.
  2. Запустите командную строку от имени администратора (нужны для 18-го шага). Далее используем следующие команды по порядку. Файлы драйвера пока не потребуются. Во время выполнения второй команды вас попросят ввести пароль, я использую password в окне запроса и далее в командах, вы можете использовать свой.
  3. cd "C:\Program Files\Microsoft SDKs\Windows\v7.1\bin"
  4. makecert -r -sv C:\cert\driver.pvk -n CN="remontka" C:\cert\driver.cer
  5. cert2spc C:\cert\driver.cer C:\cert\driver.spc
  6. pvk2pfx -pvk C:\cert\driver.pvk -pi password -spc C:\cert\driver.spc -pfx C:\cert\driver.pfx -po password
  7. До этого этапа всё должно пройти как на скриншоте ниже, командную строку не закрываем. 
  8. В папке C:\cert создайте вложенную папку, например, drv и поместите туда свои файлы драйвера. Но: если вам требуется драйвер только для x64, не копируйте .inf файл для x86 систем в эту папку и наоборот. В командной строке используем следующие команды:
  9. cd C:\WinDDK\7600.16385.1\bin\selfsign\
  10. inf2cat.exe /driver:"C:\cert\drv" /os:7_X64 /verbose
  11. В предыдущей команде для драйвера 32-бит укажите X86 вместо X64. Если будет предложено скачать .NET Framework, согласитесь, установите, а затем заново выполните команду. В идеале вы должны будете получить сообщение об успешном создании .cat файла для подписи. Однако, возможны ошибки, о наиболее частых — следующие два пункта. После исправления ошибок повторите команду из пункта 10.
  12. DriverVer set to incorrect date — возникает при дате в файле драйвера до 21 апреля 2009 года. Решение: откройте файл .inf из папки drv в текстовом редакторе (можно в блокноте) и в строке DriverVer установите другую дату (формат: месяц/день/год).
  13. Missing AMD64 CatalogFile entry (для 64-бит) или Missing 32-bit CatalogFile entry. Решение: откройте файл .inf из папки drv в текстовом редакторе и в разделе [Version] добавьте строку CatalogFile=catalog.cat
  14. В итоге вы должны получить сообщение: Catalog generation complete с указанием пути к файлу каталога, в моем случае – C:\cert\drv\catalog.cat. Далее используем следующие команды (требуется подключение к Интернету). 
  15. cd "C:\Program Files\Microsoft SDKs\Windows\v7.1\bin"
  16. signtool sign /f C:\cert\driver.pfx /p password /t http://timestamp.verisign.com/scripts/timestamp.dll /v C:\cert\drv\catalog.cat
  17. Результат подписи файла драйвера без ошибок на скриншоте ниже. Следующий шаг — добавить самоподписанный сертификат в список доверенных в системе, сделать это можно следующими двумя командами по порядку 
  18. certmgr.exe -add C:\cert\driver.cer -s -r localMachine ROOT
    certmgr.exe -add C:\cert\driver.cer -s -r localMachine TRUSTEDPUBLISHER
  19. В результате вы должны получить сообщение «CertMgr Succeeded». Если Failed или certmgr.exe не является внутренней или внешней командой — убедитесь, что командная строка запущена от имени администратора, а вы находитесь в нужной папке (см. 15 шаг).

И вот теперь можно закрыть командную строку и установить драйвер из папки C:\cert\drv с помощью диспетчера устройств, или нажав правой кнопкой по .inf файлу и выбрав пункт «Установить». Потребуется подтвердить установку драйвера в окне «Не удалось проверить издателя этих драйверов» — нажать «Все равно установить этот драйвер».

Обратите внимание, что возможные ошибки в диспетчере устройств, отображаемые для устройства с самостоятельно подписанным драйвером обычно не имеют отношения непосредственно к процессу подписи (та же ошибка для них будет появляться и без подписи, при простом отключении проверки цифровой подписи драйверов в особых вариантах загрузки). Т.е. искать причину в этом случае нужно в чем-то ещё и читать подробную инструкцию по использованию драйвера (например, в случае драйверов для FlashTool).

remontka.pro в Телеграм | Другие способы подписки

А вдруг и это будет интересно:

Как подписать драйвер в Windows x64 10/8.1/7 с помощью самоподписанного сертификата

Все 64 битные версии Windows, начиная с Windows 7, по умолчанию запрещают установку драйверов устройств, которые не подписаны с помощью корректной цифровой подписи. Неподписанные драйвер блокируются операционной системой. Наличие цифровой подписи гарантирует (в какой-то мере), что драйвер выпущен конкретным разработчиком или вендором, а его код не был модифицирован после того, как он был подписан.

В Windows 10/7 x64 существует несколько способов отключить проверку цифровой подписи устанавливаемого драйвера: с помощью групповой политики или тестового режима загрузки системы (подробнее все способы описаны в статье Отключаем проверку цифровой подписи для установки неподписанных драйверов в Windows).

Сегодня мы покажем, как можно самостоятельно подписать любой неподписанный драйвер для 64 битной версии Windows 10 или Windows 7

.

Предположим, что у нас имеется драйвер некого устройства для x64 Windows 10 или Windows 7, у которого отсутствует цифровая подпись (в нашем примере это будет драйвер для довольно старой видеокарты). Архив с драйверами под нашу версию Windows (мне удалось найти драйвер для Windows Vista x64) был скачан с сайта производителя и его содержимое распаковано в каталог c:\tools\drv1\. Попробуем установить драйвер, добавив его в хранилище драйверов Windows с помощью стандартной утилиты pnputil.

Pnputil –a "C:\tools\drv1\xg20gr.inf"

Примечание. Эта и все последующие команды выполняются в командной строке, запущенной с правами администратора.

В процессе его установки Windows 7 отобразит предупреждение о том, что система не может проверить цифровую подпись данного драйвера.

В Windows 10 такое предупреждение даже не появляется, а в консоли появляется предупреждение, что в стороннем INF файле отсутствует информация о цифровой подписи.

При попытке установить драйвер из проводника Windows, если вы щелкните ПКМ по inf файлу драйвера и выберите Install / Установить появится ошибка:

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

INF стороннего производителя не содержит информации о подписи.

Попробуем подписать данный драйвер с помощью самоподписанного сертификата.

Утилиты, необходимые для подписывания драйвера

Для работы нам понадобится скачать и установить (с настройками по умолчанию) следующие инструменты разработчика приложений для Windows.

  • Windows SDK (или Microsoft Visual Studio 2005 или выше) для вашей версии Windows – в состав этих пакетов входит Windows SDK Signing tools for Desktop, в которую включена необходимая нам утилита — signtool.exe;
  • Windows Driver Kit 7.1.0 — ISO образа GRMWDK_EN_7600_1.ISO размером 649 Мб

Совет. В Windows 10 можно использовать более новые версии Windows SDK и Windows Driver Kit. Перед установкой этих инструментов, убедитесь, что в системе установлен .NET Framework 4.

Создаем самоподписанный сертификат и закрытый ключ

Создадим в корне диска каталог C:\DriverCert.

Откроем командную строку и перейдем в следующий каталог:

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

Создадим самоподписанный сертификат и закрытый ключ, выданный, допустим, для компании Winitpro:

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

Во время создания утилита попросит указать пароль для ключа, пусть это будет P@ss0wrd.

На основе созданного сертификата создадим публичный ключ для сертификата издателя ПО (PKCS).

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

Объединим публичный ключ (.spc) и персональный ключ (.pvk) в одном файле сертификата формата Personal Information Exchange (.pfx).

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

Совет. Вы можете создать самоподписанный сертификат типа Code Signing без использования сторонних средств с помощью командлета PowerShell 5.0 — New-SelfSifgnedCertificate.

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

Затем нужно экспортировать данный сертфикат в pfx файл с паролем:

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

Совет. Несмотря на то, что сертификат имеет ограниченный срок действия, истечение срока действия сертификата CodeSigning означает, что вы не сможете создавать новые сигнатуры. Срок действия драйвера, уже подписанного этим сертификатом, бессрочен (либо старые сигнатуры действуют в течении указанного timestamp).

Генерируем CAT файл драйвера

Создадим каталог C:\DriverCert

\xg и скопируем в него все файлы из каталога, в который первоначально был распакован архив с драйвером (c:\tools\drv1\). Убедить что среди файлов имеются файлы с расширением .sys и .inf (в нашем случае xg20grp.sys и xg20gr).

Перейдем в каталог:

cd C:\WinDDK\7600.16385.1\bin\selfsign

На основе inf файла с помощью утилиты inf2cat.exe (входит в состав Windows Driver Kit -WDK) сгенерируем для нашей платформы cat файл (содержит информацию о всех файлах пакета драйвера).

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

Чтобы убедитесь, что процедура прошла корректно, проверьте, что в логе присутствуют сообщения:

Signability test complete .
и
Catalog generation complete .

Совет. В моем случае команда Inf2Cat.exe вернула ошибку:

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

Для исправления ошибки нужно в секции [Version] найти строку с DriverVer= и заменить ее на:

DriverVer=05/01/2009,9.9.9.9

После выполнения команды в каталоге драйвера должен обновиться файл g20gr.cat

Подписываем драйвер самоподписанным сертификатом

Перейдите в каталог:

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

Подпишем комплект файлов драйвера созданным нами сертификатом, в качестве сервиса таймстампа (штамп времени) воспользуемся ресурсом Globalsign. Следующая команда подпишет CAT файл цифровой подписью с помощью сертификата, хранящегося в PFX-файл, защищенном паролем.

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

Если файл подписан успешно, должна появится надпись:

Successfully signed: C:\DriverCert\xg\xg20gr.cat
Number of files successfully Signed: 1

Примечание. Цифровая подпись драйвера содержится в .cat файле, на который ссылается .inf файл драйвера. С помощью следующей команды можно проверить цифровую подпись драйвера в cat файле:

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

Лидо в свойствах файла на вкладке Digital Signatures.

CAT файл содержит цифровые подписи (отпечатки / thumbprints) всех файлов, которые находятся в каталоге драйвера (файлов, которые указаны в INF файле в секции CopyFiles). Если любой из этих файлов был изменен, то контрольная сумма файлов не будет совпадать с данными в CAT файле, в результате установка такого драйвера закончится ошибкой.

Установка сертификата

Т.к. созданный нами сертификат является самоподписанным, система по-умолчанию ему не доверяет. Добавим наш сертификат в локальное хранилище сертификатов. Сделать это можно с помощью команд:

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

Или из графического мастера добавления сертификатов (сертификат нужно поместить в хранилища Trusted Publishers и Trusted Root Certification Authorities локальной машины). В домене вы можете централизованно распространить этот сертификат на рабочие станции с помощью групповой политики.

Примечание. Проверить наличие созданного нами сертификата в доверенных можно, открыв оснастку управления сертификатами (certmgr.msc) и проверив наличие созданного нами сертификата (выдан для winitpro) в соответствующих хранилищах.Примечание. При проверке хранилища сертификатов с помощью утилиты Sigcheck этот сертификат будет отображаться как недоверенный, т.к. он отсутствует в списке со списком корневых сертификатов Microsoft (этот список нужно периодически обновлять).

Установка драйвера, заверенного самоподписанным сертификатом

Попробуем еще раз установить подписанный нами драйвер, выполнив команду:

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

Теперь в процессе установки драйвера, окна-предупреждения об отсутствующей цифровой подписи драйвера не появится.

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

В Windows 7 появляется такое предупреждение. о том, уверены ли вы, что хотите установить этот драйвер (в Windows 10 x64 1803 такое всплывающее окно не появляется). Нажав «Install», вы установите драйвер в системе.

Если по каким-то причинам драйвер не устанавливается, подробный лог установки драйвера содержится в файле C:\Windows\inf\setupapi.dev.log. Этот лог позволит вам получить более подробную информацию об ошибке установки. В большинстве случаем возникает ошибка «Driver package failed signature validation» — скорее всего это означает, что сертификат драйвера не добавлен в доверенные сертификаты.

Если установка драйвера прошла успешно, в файле setupapi.dev.log будут примерно такие строки:

>>>  [Device Install (DiInstallDriver) - C:\WINDOWS\System32\DriverStore\FileRepository\xg20gr.inf_amd64_c5955181485ee80a\xg20gr.inf]
>>>  Section start 2018/07/22 23:32:57.015
cmd: Pnputil  -i -a c:\DriverCert\xg\xg20gr.inf
ndv: Flags: 0x00000000
ndv: INF path: C:\WINDOWS\System32\DriverStore\FileRepository\xg20gr.inf_amd64_c5955181485ee80a\xg20gr.inf
inf: {SetupCopyOEMInf: C:\WINDOWS\System32\DriverStore\FileRepository\xg20gr.inf_amd64_c5955181485ee80a\xg20gr.inf} 23:32:57.046
inf:      Copy style: 0x00000000
inf:      Driver Store Path: C:\WINDOWS\System32\DriverStore\FileRepository\xg20gr.inf_amd64_c5955181485ee80a\xg20gr.inf
inf:      Published Inf Path: C:\WINDOWS\INF\oem23.inf
inf: {SetupCopyOEMInf exit (0x00000000)} 23:32:57.077
<<<  Section end 2018/07/22 23:32:57.155
<<<  [Exit status: SUCCESS]

Как вы видите, для установки самоподписанного драйвера нам даже не пришлось отключать проверку цифровой подписи драйверов с помощью bcdedit.exe, как описано здесь (команды bcdedit.exe /set loadoptions DISABLE_INTEGRITY_CHECKS и bcdedit.exe /set testsigning ON ).

Установить драйвер без цифровой подписи Windows 10

Во время установки и подключения новых устройств в Windows 10 может появится ошибка “inf стороннего производителя не содержит информации о подписи“. Это значит, что драйвер, который пытается установиться с данным устройством не прошел проверку на совместимость с данной версией Windows 10. По мнению разработчиков операционной системы такой драйвер не должен быть установлен.


Окно с ошибкой “inf стороннего производителя не содержит информации о подписи win 10”

Но как же быть? Ведь устройство без драйвера не будет работать. Выход есть! Это временное отключение проверки подписи драйверов в windows 10. Как это сделать вы узнаете в данной статье.

Создание цифровой подписи

В некоторых случаях описанные методы могут не помочь. Когда не отключается проверка подписи драйверов Windows 7 или 10, придется подписать его самостоятельно. Для этой цели нам понадобится распаковать установочный пакет и найти файл с расширением INF. В нем содержится необходимая для инсталляции в системе информация. Найдя нужный файл, вызываем его свойства и переходим на вкладку «Безопасность». Копируем путь, указанный в поле «Имя объекта».

Запускаем PowerShell с повышенными правами. Вводим следующую команду: «pnputil -a C:\path\name.inf». Заменяем в ней строку «C:\path\name.inf» на скопированный путь к файлу.

В результате ее выполнения выбранный драйвер будет зарегистрирован в системе. Этот же способ подойдет и в том случае, когда постоянно слетает цифровая подпись драйвера.

Отключение подписи

Поддерживая стабильность ОС, Microsoft не рекомендует устанавливать компоненты, не имеющие сертификатов WHQL, но такая возможность в системе осталась. Необходимость установить неподписанный драйвер может возникнуть по разным причинам. К примеру, это может быть оборудование, снятое с производства, но необходимое для работы.

Групповая политика

Самый простой способ отключить электронную подпись заключается в изменении политики безопасности. Запускаем редактор, используя меню «Выполнить».

В главном окне последовательно разворачиваем подчеркнутые пункты в области навигации. Последний раздел содержит три параметра. Нужный нам выделен рамкой. Открываем его для редактирования.

В управляющем блоке ставим переключатель в положение «Включено». В области параметров используем выпадающее меню. Выбираем пункт, о. Применяем и сохраняем внесенные изменения.

Заданное правило должно начать действовать без перезагрузки.

Особые параметры загрузки

Следующий способ предполагает использование особых вариантов загрузки операционной системы. Открываем меню параметров Windows и переходим в указанный на скриншоте раздел.

В области навигации перемещаемся к пункту «Восстановление». Используем отмеченную кнопку для перезагрузки системы.

Управление мышью тут доступно, поэтому последовательно начинаем перемещаться по меню. Открываем раздел устранения неисправностей.

Выбираем дополнительные параметры.

Переходим к настройкам загрузки.

Эта область информационная и работает в ней только отмеченная кнопка.

Система переходит в режим низкого разрешения экрана и отключает управление мышью. Нужный нам пункт седьмой в списке. Выбираем его, нажимая управляющую клавишу «F7» в верхнем ряду клавиатуры.

Компьютер перезагрузится, после чего установка неподписанных драйверов в ОС станет доступна.

Режим командной строки

С помощью этого метода можно также отключить проверку цифровой подписи драйвера в Windows 7. Запускаем PowerShell в режиме повышенных прав. Вводим последовательно приведенные на скриншоте команды.

После перезагрузки система не будет сообщать, что ей требуется драйвер с цифровой подписью. Для отключения режима в тексте последней команды указываем «OFF» вместо «ON».

Установка неподписанного драйвера в Windows 10

Вкратце определение драйвера: это программа, благодаря которой компьютерное оборудование («железо») становится видимым для операционной системы и может ею использоваться. Как и у любых других программ, у драйверов есть пункт цифровой подписи. Кликнув по любому файлу-установщику правой кнопкой мыши и выбрав «Свойства», можно изучить информацию по этому вопросу в одноименной вкладке.

По сути, наличие цифровой подписи — это один из гарантов безопасности файла. Но иногда программы бывают не подписаны. То же самое может быть у драйверов. По умолчанию в Windows 10 блокируется установка подобных приложений. Дело в том, что отсутствие подписи может говорить о том, что установка подделана. С какой целью? Кто знает. Поэтому установка таких драйверов и приложений действительно небезопасна.

Если вы все-таки уверены, что все делаете правильно, и отсутствие цифровой подписи не угрожает вашим данным, можно попробовать отключить в Windows 10 проверку данного параметра. Но, все же, если есть способ, чтобы установка прошла без такого отключения, лучше воспользоваться им. Работники компании Microsoft все-таки не зря ломают головы над тем, как сделать свой продукт безопаснее и менее уязвимым к различного типа угрозам.

Установка неподписанных драйверов в Windows 10

Представьте ситуацию, когда вы, счастливый пользователь «самой надёжной, стабильной и безопасной» операционной системы Windows 10, радостно приносите домой новенький гаджет, подключаете его к USB-порту, а вместо обычного сообщения о том, что новое устройство готово к работе получаете вот это «INF стороннего производителя не содержит информации о подписи»:

Таким нехитрым способом Microsoft пытается оградить своих клиентов от использования некошерных (по мнению самой Microsoft) устройств. Точнее, драйверов для них. Обычно драйвер, как и обычный официальный документ, содержит подпись. Только цифровую, удостоверяющую, что он прошёл тестирование на совместимость с системой и безопасен для компьютера пользователя. Но нередки случаи, когда этой подписи у драйвера нет. Часто такое наблюдается у гаджетов китайского происхождения либо у слегка устаревших устройств. Но если вы всё-таки не вняли предостережениям Microsoft и твёрдо решили установить драйвер, конечно же, это можно «очень просто» сделать – всего несколько шагов. Приступим.

Использование командной строки

  1. Если у вас UEFI вместо классического BIOS, предварительно нужно отключить функцию Secure Boot (попасть в настройки можно нажатием клавиши Del или F2 при включении компьютера).
  2. В списке приложений Windows 10 отыщите командную строку и запустите ее от имени Администратора.

  1. В окошке командной строки введите: exe -set loadoptions DISABLE_INTEGRITY_CHECKS и нажмите Enter.
  2. Теперь введите: exe -set TESTSIGNING ON и также нажмите клавишу Enter.
  3. Выполните перезагрузку.

Установка необходимых параметров завершена, и проверка цифровой подписи больше не работает. Благо рабочий стол Windows 10 теперь красуется надписью о работе в тестовом режиме, так что вы сами захотите включить проверку после установки всех необходимых драйверов. Сделать это просто точно так, как и в предыдущих шагах, но с использованием единственной команды: bcdedit.exe -set TESTSIGNING OFF.

Как выполнить установку неподписанного драйвера в Windows 10

Если к компьютеру с операционной системой Windows 10 (x86 или x64) надо подключить какое-либо устройство (например, сканер, принтер, камеру), необходимо также установить соответствующее программное обеспечение (ПО) для его функционирования – драйвер.

Корпорация Microsoft тестирует драйверы всех аппаратов, выпускаемых для работы с персональными компьютерами (ПК). На успешно прошедших все испытания драйверах компания ставит свою подпись (цифровую), то есть включает в ПО специальный файл в виде сертификата. Этот цифровой документ служит гарантией подлинности драйвера и безопасности ОС, на которую он будет установлен. Техника с подписанными драйверами легко синхронизируется с системой Виндовс 10.

Однако иногда встречаются устаревшие устройства, находящиеся в рабочем состоянии, которые требуется подсоединить к ПК и заставить работать. К таким техническим приспособлениям невозможно найти ПО с цифровой подписью.

Чтобы справиться с данной проблемой, можно воспользоваться одним из трех способов.

  1. Кликнуть на значок «Пуск» (в левом нижнем углу), выбрать «Завершение работы».

  2. На клавиатуре нажать кнопку Shift , удерживать её и одновременно выбрать «Перезагрузка».
  3. В результате перезагрузки на экране появится такое меню, содержащее дополнительные параметры. Войти в папку «Диагностика».

  4. Выбрать «Дополнительные параметры».

  5. Зайти в «Параметры загрузки».

  6. Нажать Перезагрузить (справа внизу).

  7. На экране перезагрузившегося компьютера появится меню параметров загрузки Windows 10.
  8. Чтобы изменить конфигурацию запуска Windows 10 требуется нажать нужную кнопку ( F1 — F9 ). Надавить F7 .

  9. После того как система запустится вновь, может быть произведена установка неподписанных драйверов.
  10. Выполнить перезагрузку еще раз для восстановления настроек ОС.

Внимание! Этот вариант подходит только для ПК с базовой программой Basic Input/Output System (BIOS).

Если компьютер снабжен интерфейсом Unified Extensible Firmware Interface (UEFI), надо сначала отключить опцию Secure Boot.

  1. Навести курсор на «Пуск», нажать правую клавишу мыши. Выбрать «Командная строка (администратор)».

  2. Набрать bcdedit.exe -set loadoptions DISABLE_INTEGRITY_CHECKS , затем bcdedit.exe -set TESTSIGNING ON Нажать Enter .
  3. Через некоторое время в окне появится информация об успешном завершении операций. Закрыть командную строку.

  4. Выполнить перезагрузку устройства. Теперь ОС будет функционировать в тестовом режиме.
  5. Установить необходимые драйверы с отсутствующей цифровой подписью.

Чтобы вернуться к предыдущим настройкам, в командную строку ввести bcdedit.exe -set TESTSIGNING OFF и подтвердить ( Enter ). Когда выполнение заданной операции завершится, перезагрузить ПК.

Внимание! Данный вариант не сработает для Windows 10 Home.

  1. Одновременным нажатием клавиш «Пуск» и R запустить окно «Выполнить». В строке «Открыть» набрать gpedit.msc. Нажать OK (или Enter ).
  2. В редакторе (справа) войти в папку «Конфигурация пользователя».
  3. Затем «Административные шаблоны».
  4. Далее «Система».
  5. Выбрать раздел «Установка драйвера».
  6. Потом «Цифровая подпись драйверов устройств».

  7. Поставить галочку на «Отключено»


    или о, а в параметрах под надписью «Если Windows обнаруживает файл драйвера без цифровой подписи» выбрать пункт «Пропустить».


    Надавить OK .

  8. Выполнить перезагрузку компьютера.
  9. Теперь программы без цифровой подписи могут быть установлены.

С помощью командной строки

Этот способ должен отключить проверку цифровой подписи драйверов навсегда — с использованием командной строки для редактирования параметров загрузки. Ограничения способа: у вас либо должен быть компьютер с BIOS, либо, если у вас UEFI, требуется отключить Secure Boot (это обязательно). К сожалению, в последних версиях Windows 10 описываемое обычно не срабатывает, но попробовать можно.

Действия следующие — запустите командную строку Windows 10 от имени администратора (Как запустить командную строку от имени администратора). В командной строке по порядку введите следующие две команды:

  • bcdedit.exe -set loadoptions DISABLE_INTEGRITY_CHECKS
  • bcdedit.exe -set TESTSIGNING ON

После того, как обе команды будут выполнены, закройте командную строку и перезагрузите компьютер. Проверка цифровых подписей будет отключена, с одним лишь нюансом: в правом нижнем углу вы будете наблюдать уведомление о том, что Windows 10 работает в тестовом режиме (чтобы убрать надпись и вновь включить проверку, введите в командной строке bcdedit.exe -set TESTSIGNING OFF).

И еще один вариант отключения проверки подписи с помощью bcdedit, который по некоторым отзывам срабатывает лучше (проверка не включается снова автоматически при следующих загрузка Windows 10):

  1. Загрузить компьютер в безопасном режиме (см. Как зайти в безопасный режим Windows 10).
  2. Открыть командную строку от имени администратора и ввести следующую команду (нажав Enter после нее).
  3. bcdedit.exe /set NOINTEGRITYCHECKS ON
  4. Перезагрузить Windows 10 в обычном режиме.

В дальнейшем, если требуется снова включить проверку, сделайте это тем же способом, но вместо on в команде используйте off.

Установка неподписанных драйверов в Windows 10

1) Идём Пуск > Параметры > Обновление и безопасность, открываем вкладку Восстановление и в разделе Особые варианты загрузки нажимаем кнопку «Перезагрузить сейчас«.

2) Система попросит нас немного подождать и выдаст следующее меню, где нужно выбрать Поиск и устранение неисправностей.

3) На следующем экране выбираем пункт Дополнительные параметры.

4) Затем можем немного почитать, но потом всё равно нажимаем кнопку Перезагрузить.

5) Дождавшись перезагрузки компьютера, в появившемся меню выбираем пункт Параметры загрузки.

6) В следующем разделе нас интересует пункт № 7, поэтому, внимательно прочитав инструкции, нажимаем клавишу F7.

7) Дожидаемся полной загрузки системы и пытаемся снова установить драйвер устройства. Система пытается в последний раз заставить нас одуматься.

Но мы не поддаёмся на провокацию и выбираем пункт «Все равно установить этот драйвер», в очередной раз подтверждая нашу с вами безответственность. Ура! Обычно после этого мы с радостью можем наблюдать сообщение о том, что драйвер успешно установлен.

Как подписать драйвер в Windows 7

Перед началом инструкций отметим, что иногда бывает проще отключить проверку цифровых подписей в операционной системе, нежели вручную подписывать драйвер. К тому же есть и альтернативные варианты инсталляции неподписанного ПО, о чем более детально читайте в других руководствах на нашем сайте, воспользовавшись ссылками ниже.

Подробнее:
Отключение проверки цифровой подписи драйверов в Windows 7
Установка драйвера без проверки цифровой подписи в Windows

Способ 1: Импорт цифровой подписи

Первый вариант подходит тем пользователям, кто собирается устанавливать его в операционную систему только один раз и не заинтересован в дальнейшем распространении. Этот способ лучше всего использовать в тех ситуациях, когда вы скачали драйвер, но оказалось, что он не подписан и инсталлировать его не получается. Тогда от вас требуется перенести его конфигурацию в Windows 7, что осуществляется так:

  1. Перейдите в папку с драйвером и отыщите там файл формата INF, который и должен быть установлен в ОС. Щелкните по нему ПКМ, чтобы вызвать контекстное меню.
  2. Внизу списка выберите пункт «Свойства».
  3. Переместитесь на вкладку «Безопасность».
  4. Полностью выделите имя файла и скопируйте его клавишами Ctrl + C или вызвав контекстное меню нажатием ПКМ.
  5. Запустите «Командную строку» от имени администратора любым удобным методом, например, отыскав приложение через меню «Пуск».
  6. Введите там команду pnputil.exe –a и через пробел вставьте скопированное ранее имя. Можно поступить и по-другому, используя cd. Тогда через нее нужно переместиться к каталогу с драйвером и вписать pnputil.exe –a + название файла.
  7. Ожидайте окончания обработки компонента, что займет буквально несколько секунд. После на экране отобразится уведомление о том, что импорт настроек произошел успешно.

Теперь драйвер считается зарегистрированным. Если инсталляция остальных компонентов должна происходить при помощи исполняемого файла, перейдите в каталог с программным обеспечением и запустите его, чтобы завершить установку.

Способ 2: Ручное создание подписи

Этот способ более сложный, поэтому пришлось даже разделить его на этапы во избежание проблем с пониманием. Его суть заключается в использовании фирменных средств разработчика от Microsoft, чтобы создать подпись для пользовательского драйвера. Особое внимание этому методу стоит уделить тем, кто заинтересован в ручной разработке драйверов.

Шаг 1: Предварительные действия

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

Перейти на официальный сайт Microsoft для скачивания Windows SDK for Windows 7

  1. Откройте ссылку выше, чтобы открыть страницу скачивания Microsoft Windows SDK, где нажмите по кнопке «Download».
  2. Загрузка инсталлятора начнется в автоматическом режиме: ожидайте ее окончания, а затем запустите исполняемый файл.
  3. При появлении окна контроля учетных записей разрешите внесение изменений.
  4. Следуйте отобразившейся на экране инструкции и переходите далее.
  5. По ссылке, ведущей на страницу приложения, загрузите Windows Driver Kit.

    Перейти на официальный сайт Microsoft для скачивания Windows Driver Kit 7.1.0

  6. Это целый пакет разных утилит и дополнительных компонентов, распространяющийся в виде ISO-образа. По завершении загрузки вам необходимо смонтировать его через любую удобную программу, о чем читайте по ссылке далее.

    Подробнее: Как смонтировать образ в программе DAEMON Tools

  7. После запуска диска через виртуальный привод откройте EXE-файл для начала инсталляции.
  8. Укажите версию операционной системы.
  9. Выберите для установки все присутствующие инструменты, отметив их галочками, и завершите операцию.
  10. Затем откройте корень системного логического тома жесткого диска, где создайте папку с названием «DriverCert». В нее будут помещены все зависящие от драйвера объекты для удобства взаимодействия с ними.
  11. Переходите по стандартным расположениям установленных компонентов, чтобы запомнить путь ко всем каталогам. Вы можете скопировать их или записать, чтобы не запутаться при выполнении следующих действий.

Сейчас уже существуют новые версии рассмотренных инструментов, но вам нужно загружать только те сборки, на которые мы оставили ссылки. Связано это с тем, что разработчики в новых версиях прекратили поддержку используемых далее утилит, что не позволит вручную подписать драйвер. Убедитесь в том, что все компоненты установлены, перезагрузите компьютер и переходите далее.

Шаг 2: Генерация ключа и сертификата

Сертификат необходим драйверу для того, чтобы определить его подлинность, а сгенерированные ключи обезопасят сам файл от несанкционированного изменения. Создание таких компонентов — обязательное условие от Microsoft, поэтому каждому пользователю придется выполнить следующие действия:

  1. Запустите «Командную строку» от имени администратора.
  2. Введите команду cd C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1\bin, чтобы перейти к папке с объектами SDK. Если вы изменяли директорию при установке, замените путь на актуальный. Активируйте команду нажатием по клавише Enter.
  3. Задействуйте утилиту, входящую в состав SDK, чтобы сгенерировать сертификат, вписав в консоль команду makecert -r -sv C:\DriverCert\myDrivers.pvk -n CN="NameCompany" C:\DriverCert\MyDrivers.cer. Замените NameCompany на название изготовителя драйвера или впишите произвольное.
  4. На экране отобразится форма для создания пароля к закрытому ключу, а от вас требуется ввести его в соответствующем поле и подтвердить.
  5. Для продолжения работы в новом окне введите уже присвоенный пароль.
  6. После автоматического закрытия окна ознакомьтесь с содержимым консоли: если в конце вы видите уведомление «Succeeded», значит, генерация прошла удачно и можно двигаться далее.
  7. Следующий обязательный этап заключается в создании публичного ключа, и он будет доступен всем желающим внедрить драйвер в программное обеспечение. Для этого вставьте команду cert2spc C:\DriverCert\myDrivers.cer C:\DriverCert\myDrivers.spc.
  8. Сообщение в консоли должно свидетельствовать об успешном создании публичного ключа.
  9. Закрытый и публичный ключ должны быть объединены в один компонент, а для этого используется команда pvk2pfx -pvk C:\DriverCert\myDrivers.pvk -pi P@ss0wrd -spc C:\DriverCert\myDrivers.spc -pfx C:\DriverCert\myDrivers.pfx -po PASSWORD. Замените PASSWORD на ранее созданный пароль закрытого ключа.

Это был самый простой этап создания цифровой подписи для драйвера, в ходе которого практически никогда не возникает никаких ошибок. Однако если на экране отобразились какие-то предупреждающие уведомления, не игнорируйте их, читайте содержимое и исправляйте ситуацию в соответствии с находящимися там рекомендациями.

Шаг 3: Создание конфигурационного файла

Конфигурационный файл необходим каждому драйверу, ведь именно в нем и будут храниться основные сведения. В дальнейшем он может пригодиться, если, например, понадобится изменить дату последнего изменения или внести коррективы в название версии драйвера. Сначала понадобится обратиться в заранее созданную папку «DriverCert», куда перенесите файлы драйвера, для которого и создается подпись, выделив для них отдельный подкаталог. После запустите консоль и выполните такие действия:

  1. Для использования следующей утилиты снова придется переместиться в папку с набором инструментов от Майкрософт, а для этого задействуйте команду cd C:\WinDDK\7600.16385.1\bin\selfsign.
  2. Предварительно откройте каталог с драйвером и убедитесь, что там есть два файла с расширениями INF и SYS, ведь они будут задействованы для следующего формирования конфигурационного файла. После введите inf2cat.exe /driver:"C:\DriverCert\DRIVER" /os:7_X64 /verbose, заменив DRIVER на название ранее созданной папки с файлами. Подтвердите выполнение команды нажатием на Enter.

Следите за состоянием «Командной строки» и ожидайте появления на экране уведомлений «Signability test complete» и «Catalog generation complete». Во время процедуры создания файла настоятельно не рекомендуется выполнять других действий на компьютере, поскольку это может вызвать сбои в функционировании утилиты.

Отдельно отметим самую частую ошибку, которая появляется при создании конфигурационного файла. Ее текст выглядит примерно так: «22.9.7: DriverVer set to incorrect date (must be postdated to 4/21/2009 for newest OS) in \XXXXX.inf», а вызывает ее некорректно установленная дата создания объекта. Если такая проблема возникла, откройте целевой файл, имя которого и указано в ошибке, через стандартный «Блокнот», где отыщите строку «DriverVer=» и поменяйте ее значение на 05/01/2009,9.9.9.9. Сохраните изменения и повторно выполните создание конфигурационного файла.

Шаг 4: Создание подписи для драйвера

Когда все предыдущие этапы завершены, остается только подписать сам драйвер, что выполняется при помощи добавленных ранее средств разработчика через уже привычную Командную строку.

  1. Откройте консоль от имени администратора и напишите команду cd "C:\Program Files (x86)\Windows Kits\10\bin\10.0.17134.0\x64".
  2. Далее вставьте содержимое signtool sign /f C:\DriverCert\myDrivers.pfx /p PASSWORD /t http://timestamp.globalsign.com/scripts/timstamp.dll /v "C:\DriverCert\xg\xg20gr.cat", заменив PASSWORD на пароль закрытого ключа, который создавался ранее. Во время данной операции будет задействован онлайн-сервис Globalsign, отвечающий за установку штампа времени, поэтому убедитесь в наличии подключения к интернету. Появившаяся в консоли строка Successfully signed: C:\DriverCert\xg\xg20gr.cat Number of files successfully Signed: 1 уведомит об успешном завершении процесса.
  3. По очереди вставьте две команды ниже, устанавливающие сертификат.

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

Следуйте отобразившимся в графическом меню инструкциям, чтобы завершить подпись. На этом процесс считается оконченным, а подписанный драйвер остается только вручную установить, если это требуется.

Подробнее: Ручная установка драйверов в Windows 7

Мы рады, что смогли помочь Вам в решении проблемы.
Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
Помогла ли вам эта статья?
ДА НЕТ

Как подписать драйвер | Компьютер для чайников

По умолчанию все последние версии Windows запрещают устанавливать драйверы устройств, которые не подписаны действительной цифровой подписью. Такие драйверы блокируются системой. Цифровая подпись гарантирует (в некоторой степени), что драйвер был выпущен определенным разработчиком или поставщиком, и его код не был изменен после того, как он был подписан.

Проще говоря, если драйвер подписан, то компьютер считает, что он не менялся после того как его сделали разработчики соответствующего оборудования, и что никакие злые хакеры не вписали в драйвер вредоносный код, который мог бы украсть Ваши пароли или ещё чего плохого натворить.

Содержание статьи

Как подписать драйвер для работы устройств на Windows 10 или Windows 7

Разных причин отсутствия подписи много, и раз Вы это читаете, то скорее всего столкнулись с одной из таких причин. В этом примере попробуем установить довольно старый драйвер для звуковой карты, для которого уже истек срок активности сертификата. Архив с драйверами был загружен с веб-сайта производителя ноутбуков, укомплектованных соответствующей видеокартой (нам удалось найти версию драйвера для Windows XP). Чтоб было удобнее работать с драйвером, он был перемещён в специально созданную под него папку: c:\drv\ (папка с названием “drv” на диске “C”). Пробуем установить драйвер путем добавления его через консоль в хранилище драйверов, с помощью стандартного инструмента pnputil:
Pnputil –a c:\drv\HDALC2.inf

Для этого впишите “cmd.exe” в поисковой строке рядом с кнопкой “Пуск” и нажмите “Запустить от имени администратора”. Если у Вас на этом этапе открывается окно с предупреждением, нажмите “Да”.
Можете или скопировать адрес из примера и вставить в консоль нажатием правой кнопки мышки, или ввести вручную. Только не забудьте поменять название файла драйвера из примера на название файла Вашего драйвера, а также поменять адрес, если Вы распаковали драйвер в другую папку.

Ожидаемо, получаем ошибку, указывающую на то, что в INF-файле не удаётся обнаружить информацию о цифровой подписи.
То же сообщение мы получим если попробуем нажать на файле драйвера ПКМ и выбрать “Установить”.

Настало время попробовать подписать драйвер свежесозданным сертификатом.

Необходимые инструменты

Чтобы сгенерировать подпись и подписать драйвер, вам необходимо загрузить и установить следующие инструменты разработки приложений (с настройками по умолчанию):

  • .NET Framework 4 — нужен для работы нижеуказанных инструментов;
  • Windows SDK (можно не скачивать, если у Вас есть Visual Studio 2005 или новее) для вашей версии Windows. В комплект входит набор инструментов для подписания, в котором и находится нужное средство — signtool.exe;
  • WDK 7.1.0.

Создание самоподписанного сертификата и приватного ключа

  1. Создайте папку “DrvCert” на диске “C”
  2. Вернитесь в консоль и введите cd C:\Program Files (x86)\Windows Kits\10\bin\x64\
  3. Создайте самоподписанный сертификат командой makecert -r -sv C:\DrvCert\myDrivers.pvk -n CN="Company" C:\DrvCert\myDrivers.cer, — где вместо «Company» можно ввести любое другое название условной компании, для которой издается сертификат. В процессе Вам нужно будет задать пароль. Возьмём для примера “0rPr0RpR”.
  4. Создайте публичный ключ командой cert2spc C:\DrvCert\myDrivers.cer C:\DrvCert\myDrivers.spc
  5. Совместите публичный и приватный ключи в сертификате с форматом .pfx с помощью команды pvk2pfx -pvk C:\DrvCert\myDrivers.pvk -pi 0rPr0RpR -spc C:\DrvCert\myDrivers.spc -pfx C:\DrvCert\myDrivers.pfx -po 0rPr0RpR — где в конце тот пароль, который Вы вводили ранее.

Создание Файла Каталога

  1. Теперь нужно создать папку C:\DrvCert\hda и скопировать в неё все файлы из папки, в которую первоначально был извлечен драйвер из архива (c:\drv\). Среди этих файлов обязательно должны быть файлы форматов .sys и .inf (в примере: RTKHDAUD.sys и HDALC2.inf).
  2. Вернитесь в консоль и введите cd C:\WinDDK\7600.16385.1\bin\selfsign
  3. Создайте файл CAT (в нём находится информация о расположении файлов в пакете драйвера) на основе файла INF с помощью средства inf2cat.exe (входит в комплект WDK). Для этого запустите следующую команду: inf2cat.exe /driver:"C:\DrvCert\hda" /os:7_X86 /verbose.

Подписание драйвера

  1. Введите cd C:\Program Files (x86)\Windows Kits\10\bin\x64\
  2. Теперь набор файлов драйверов нужно подписать сертификатом, который вы создали ранее, используя службу Globalsign.

Следующая команда подпишет файл CAT цифровой подписью, используя сертификат, хранящийся в файле PFX, защищенный введенным ранее паролем: signtool sign /f C:\DrvCert\myDrivers.pfx /p 0rPr0RpR /t http://timestamp.verisign.com/scripts/timstamp.dll /v C:\DrvCert\hda\hda32.cat, где в конце — название .cat файла который появился в папке
Если всё прошло успешно то появится сообщение:
Successfully signed: C:\DrvCert\xg\HDALC2.cat

Установка самоподписанного сертификата

Поскольку созданный только-что сертификат является самоподписанным, по умолчанию система ему не доверяет. Добавьте свой сертификат в хранилище сертификатов локального компьютера:
certmgr.exe -add C:\DrvCert\myDrivers.cer -s -r localMachine ROOT
certmgr.exe -add C:\DrvCert\myDrivers.cer -s -r localMachine TRUSTEDPUBLISHER

Установка драйвера

Вводим команду: Pnputil –i –a C:\DrvCert\hda\HDALC2.inf
Теперь ошибка как при первой попытке не появляется, а вместо неё видим сообщение об успешной установке драйвера.

Поздравляем с успешной установкой!
Можно было и избежать мороки с массой команд и установить драйвер с помощью отключения проверки сертификата, но об этом уже в другой статье.

Цифровая подпись драйвера в Windows

В операционных системах Windows, начиная с версии Vista, все драйверы устройств должны иметь цифровую подпись. В этой публикации о том, как можно выйти из ситуации. Возможно ли подписать драйвер своими силами?

Переломным моментом стал выход пакета обновления SP1 для Windows Vista, поскольку до него оставалась возможность отключения проверки подписей. В командной строке необходимо было выполнить:

bcdedit /set loadoptions DDISABLE_INTEGRITY_CHECKS

С выходом различных заплаток и пакетов обновления это «правильное» отключение было заблокировано разработчиками Microsoft. Однако остались и другие методы, позволяющие использовать драйверы устройств, не имеющие цифровой подписи.

Самый доступный и очевидный — это ручной метод, предусматривающий нажатие клавиши «F8» на начальном этапе загрузки операционной системы. В появляющемся меню загрузчика присутствует пункт «Отключение обязательной проверки подписи драйверов». Конечно же, чтобы работать с неподписанными драйверами устройств в таком режиме, требуется каждый раз во время загрузки выполнять данное действие, что, согласитесь, в конечном итоге может сильно надоесть. Именно по этой причине данный метод был усовершенствован.

Как-то я уже рассказывали про программу ReadyDriver Plus, которая способна автоматизировать ручной способ. Она интегрируется в стандартный загрузчик Windows Vista, после чего во время каждой загрузки автоматически выбирает пункт меню «Отключение обязательной проверки подписи драйверов». К сожалению, применение данной программы нельзя назвать полностью безопасным, ведь одна производит модификацию системных файлов. К тому же, как выяснилось, программа не работает в новой операционной системе Windows 7, хотя возможно, что её автор в будущем выпустит совместимую версию.

К счастью, существует еще один метод, предназначенный для разработчиков драйверов. Ведь очевидно, что они не могут предоставлять каждую бету версию своих драйверов для подписи в Microsoft. Именно по этой причине в Windows Vista, а также в новой операционной системе Windows 7 встроен тестовый режим. Он позволяет разработчикам протестировать их программный код еще до того, как он будет отправлен в лабораторию Microsoft. Правда, здесь тоже есть один нюанс. Даже в тестовом режиме системные файлы драйверов должны получить свидетельство, прежде чем их можно будет установить. Благо, на помощь пришли энтузиасты со своей программой Driver Signature Enforcement Overrider (DSEO). Она позволяет создавать свои собственные непроверенные свидетельства.

Таким образом, суть метода относительно проста. Требуется лишь включить тестовый режим в операционной системе и для всех драйверов устройств, не имеющих цифровой подписи, при помощи программы Driver Signature Enforcement Overrider получить свидетельства. Радует то, что при этом полностью отсутствуют риски привести операционную систему к нерабочему состоянию. Ведь от нас не требуется изменение загрузчика или других её системных файлов. Используется штатный метод, специально предусмотренный Microsoft. Единственное неудобство, которое вы получите, будет заключаться в том, что на рабочем столе возле часов будет выводиться маленькая надпись, сообщающая версию билда операционной системы.

Программа Driver Signature Enforcement Overrider работает как с 32-битными, так и с 64-битными операционными системами. Перед использованием необходимо обязательно отключить контроль учетных записей пользователей (UAC). Инсталляция программы не требуется, просто скачайте её и запустите. Интерфейс предельно прост, и вся работа осуществляется в виде мастера.

Порядок действий

Согласитесь с тем, что вы используете данную программу на свой страх и риск, нажав соответствующую кнопку. Я, как и разработчики программы, не несём никакой ответственности за любой вызванный ущерб. Хотя, как уже было отмечено, программа использует штатный режим операционной системы и не может навредить сама по себе. Над чем действительно стоит задуматься, так это над тем, а стоит ли вообще использовать драйверы устройств, не имеющие цифровой подписи. Насколько они будут корректно работать? Доверяете ли вы их разработчику и источнику?

Включите тестовый режим, установив переключатель в положение «Enable Test Mode». Кстати, обратите внимание, что здесь же предусмотрено обратное действие «Disable Test Mode», отключающее тестовый режим.

Теперь нужно добавить подписи для непроверенных системных файлов. Для этого выберите «Sign a System File» и введите имя файла, включая полный путь. Например, если файл драйвера ATITool64.sys расположен в каталоге C:\Windows\System32\Drivers, то вам необходимо указать C:\Windows\System32\Drivers\ATITool64.sys.

В случае если необходимо подписать несколько файлов, то просто повторите эту процедуру несколько раз.

Вот собственно и все. После перезапуска компьютера драйверы будут работать. Если, конечно, они на это способны. Мы ведь просто решаем вопрос подписания дрйверов. А вот подходят ли они к вашему оборудованию и т.д. — это совсем другое.

Инструкция: подписывание драйверов для Windows 10 (EV) — Программирование драйверов

Содержание статьи

Инструкция: подписывание драйверов для Windows 10 (EV)

Эта статья — быстрый онлайн-помощник для тех, кто переходит на новое
подписывание драйверов в Windows 10 (EV, WHDC-портал). Здесь я постараюсь
дать основные рекомендации, чтобы помочь избежать глупых ошибок и, не
теряя времени, скорее адаптировать свои проекты под новые требования.

Для того, чтобы начать подписывать драйверы по-новому, вам потребуется:

* EV-сертификат, приобретенный у Symantec, DigiCert, GlobalSign, WoSign
или Entrust. В тот момент, когда пишутся эти строки, поддерживаются только
сертификаты, приобретенные в перечисленных выше организациях. В будущем список,
вероятно, будет дополняться.

По тексту ниже подразумевается, что сертификат уже установлен на вашем компьютере.

* Аккаунт на Microsoft (LiveID). Регистрация там бесплатная и занимает несколько минут.

* Утилита signtool с поддержкой SHA256. Утилиту лучше взять из последних версий WDK
(8 и выше), так как старые версии не поддерживают SHA256 и некоторые другие возможности,
которые вам потребуются.

* Несколько часов свободного времени.

Первое, что вам нужно сделать — зарегистрировать свою компанию на портале WHDC.
Идем сюда:

жмем ‘Dashboard’ и логинимся в свой аккаунт Microsoft.

Далее вам будет предложено скачать файл winqual.exe, подписать его своим сертификатом и
загрузить обратно. Так портал определяет валидность сертификата, а также сможет сопоставить
цифровую подпись с вашей компанией, если это будет необходимо. Команда подписи для
signtool.exe затруднений вызывать не должна:

Для вашего сертификата опции могут быть немного другие. Обратите внимание на ключи /fd и /td —
они указывают, что и для цифровой подписи, и для timestamp-сервера следует использовать
SHA256, а не SHA1. EV-сертификаты используют только SHA2. Также обратите внимание,
что здесь и далее больше не будут использоваться никакие кросс-сертификаты (ключ /ac),
так как для ‘attestation signing’ (подписывание драйверов через веб-портал) это не требуется.

Точно такой же командой вы будете подписывать submission (архив с файлами для подписи).

Подписав и загрузив winqual.exe, вы попадете на страницу, где вам предложат указать
сведения о компании — название, юридический адрес, почтовый индекс, телефон, e-mail.
Судя по всему, эта информация не проверяется и нужна только «для галочки».
Но указывать откровенно «липовые» данные, разумеется, не стоит.

Вот и все, теперь вы успешно зарегистрированы на веб-портале WHDC.
Осталось немного — дать нужные разрешения (permissions), а также подписать несколько
соглашений, которые предлагает вам Microsoft (по поводу Anti-Malware, DRM и остальные в
таком же духе, всего штук 10). Я не буду подробно описывать нужные шаги, т.к. они
достаточно очевидны.

После этого вам необходимо перелогиниться на веб-портале (выйти и зайти снова), чтобы
изменения вступили в силу.

Сначала вам нужно создать cab-архив с файлами для подписи внутри.
Если пакет драйверов только один, cab-файл должен иметь такую структуру:

Я сразу советую проверять, валиден ли ваш INF-файл, используя утилиту inf2cat из WDK.
Например:

Файл cat, который сгенерировала утилита inf2cat.exe, в архив класть не нужно,
он все равно будет проигнорирован и портал при подписи создаст новый.

Важный момент: все пакеты драйверов в архиве должны быть под какую-то одну
архитектуру — или x64, или x86. На MSDN пишут, что Driver Package может
быть под обе архитектуры, но как правильно их упаковать в cab-архив — я
так и не понял. Попытки добавить еще один уровень в дереве папок внутри
архива (32/64, x86/x64, i386/amd64) успехом не увенчались.
Видимо, самый простой путь — делать две submission, одну чисто под x64,
вторую чисто под x86.

Когда cab-архив будет готов, вам нужно подписать его своим сертификатом.

Далее на веб-портале идем в раздел ‘File signing services’ и выбираем
пункт ‘Create driver signing submission’. После этого все очень просто:
вы указываете название своей submission (произвольное, это нужно только
для информативных целей), является ли ваш драйвер универсальным (см. концепцию
‘Universal Driver’ в MSDN), а также платформы, под которые собран драйвер,
их в настоящий момент четыре:

Microsoft Windows 10 AU Client family, x86
Microsoft Windows 10 AU Client family, x64
Microsoft Windows 10 Client family, x86
Microsoft Windows 10 Client family, x64

C x64/x86 все понятно, а вот разницу между Client и AU Client я не нашел —
подпись в конечном итоге получается одинаковая.

После этого вы загружаете свой cab-архив и жмете ‘Submit’. Все.

Обработка submission (процесс называется review) занимает некоторое время, у
меня было где-то около 15 минут, иногда может затянуться, как пишут, на
часы или даже сутки. Но обычно слишком долгий процесс обработки submission —
признак того, что что-то пошло не так и процесс будет завершен с ошибкой.

По завершении вам придет письмо на почту и архив с подписанными файлами можно
будет скачать там же, на веб-портале.

Кстати, можно запостить сразу несколько submission — они обрабатываются
параллельно и в некоторых случаях можно сэкономить немного времени.

В сведениях о цифровой подписи файлов, которые вам вернет портал, вы с удивлением
(а кто-то, возможно, и с радостью) обнаружите, что вместо ‘OOO Vasya Pupkin’ будет
вписано безликое и ужасное ‘Microsoft Windows Hardware Compatibility Publisher’.

Теперь драйвер можно ставить и запускать на Windows 10 — 1607 и никакие
Secure Boot, Device Guard и т.п. не помеха.

Теперь вопросы чисто практического плана.

Q: Как быть с предыдущими версиями Windows (Vista, Windows 7, Windows 8, Windows 8.1)?

A: К сожалению, здесь без вариантов: либо вам придется купить еще один сертификат SHA1 и
использовать его, либо попробуйте пройти HLK-тесты через веб-портал и тогда получите
подпись, которую понимают все указанные выше версии Windows.

Прохождение HLK-тестов — достаточно большой и серьезный «квест», затрагивать эту
тему здесь я не буду.

Q: Как быть с Windows Server 2016 (vNext)? Его ведь нету в списке при отправке
submission на веб-портале.

A: Для Windows Server 2016 прохождение HLK-тестов для драйвера — единственный
легальный способ поддержки, другие типы цифровых подписей система принимать
не будет. Так что ждите через некоторое время очередную статью от меня про HLK.

Q: Как обстоят дела с двойными сигнатурами?

A: Портал добавляет свою подпись, не затирая старую. Поэтому можно, например,
подписать .sys-файл сначала стандартным сертификатом с SHA1 старым способом с
кросс-сертификатом (cross-signing), а затем отправить его на веб-портал, где
ему будет добавлена вторая подпись SHA256 для Windows 10 (attestation signing).
Такой драйвер сможет запускаться на любых версиях Windows.

Однако в случае с cat-файлами это не сработает, потому что, как уже писалось выше,
портал генерирует свой cat-файл, игнорируя тот, что лежит внутри cab-архива.

Поэтому, если ваш драйвер ставится через INF-файл и вы хотите поддерживать
максимально возможный диапазон версий Windows, придется иметь несколько
пакетов драйвера, один для систем до Windows 10, второй для Windows 10 и выше.

Q: Что делать с модулями, которые собираются с ключом /INTEGRITYCHECK и,
согласно MSDN, должны подписываться с опцией /ph (generate page hashes)?
Например, драйвер, использующий Object Callbacks (ObRegisterCallbacks)?

A: Ничего не нужно. Система подписывания остается такой же, как и для
остальных драйверов Windows 10.

Q: EV-сертификат поставляется на USB-токене, это секьюрно, но неудобно.
У нас разработчики географически удалены друг от друга, а подписывать,
получается, может только один?

A: К сожалению, здесь действительно есть ряд неудобств.
Например, токен SafeNet не работает нормально в RDP-сессии и время
от времени начинает требовать ввод пароля (PIN).

Для решения этой проблемы можно настроить параметры, как написано здесь:

А также воспользоваться приведенным кодом и утилитой RemoteSignTool
(обертка над signtool.exe, работающая через интернет).

В настоящее время ведутся дебаты о том, чтобы оставить EV только для регистрации
на веб-портале, а для подписи submission использовать «обычные» сертификаты
(т.е. без USB-токенов и тому подобного):

Как подписать драйвер цифровой подписью

Вопрос

Ответы

В x64 делаете так: Выполнить gpedit.msc => Конфигурация_пользователя => Административные_шаблоны => Система => Установка_драйвера => Цифровая_подпись_драйверов_устройств => Поставить в Отключено.
Всё. Никакого гемороя нет. И никаких подписей не нужно, маразм это.
Либо путем подписания драйверов — например:
1. Скачиваем программу: Driver Signature Enforcement Overrider v1.2
2. Отключаем Контроль учетных записей пользователей (UAC).
3. Запускаем программу.
4. Включаем тестовый режим, установив переключатель в положение «Enable Test Mode». Кстати, здесь же предусмотренно обратное действие «Disable Test Mode», отключающее тестовый режим.
5. Выпишите список драйверов (их полный путь и название)для своего устройства. Для этого следует зайти в «Свойства системы» — «Диспетчер устройств» найти там устройство с «проблемным» драйвером и посмотреть сведения о драйверах.
5. Переписываем папки с драйверами в отдельный каталог и добавляем подписи для непроверенных системных файлов. Для этого выберите «Sign a System File» и введите имя файла, включая полный путь. Например, если файл драйвера ATITool64.sys расположен в каталоге C:WindowsSystem32Drivers, то вам необходимо указать C:WindowsSystem32DriversATITool64.sys. В случае если необходимо подписать несколько файлов, то просто повторяем эту процедуру несколько раз. Но настоятельно рекомендую делать это в отдельной папке и потом ставить драйвер, а не в System 32.
5. Перезагружаем компьютер.

Конечно, перед этим рекомендую пнуть сюппорт производителя, путем написания официального письма для официального ответа про отсутствие поддержки Vista x64 или Win7 x64 (у них драйвера пересекаются часто).

  • Предложено в качестве ответа Vinokurov Yuriy Moderator 16 ноября 2009 г. 10:59
  • Помечено в качестве ответа Vinokurov Yuriy Moderator 1 декабря 2009 г. 9:34

Все ответы

Да, каждый раз.
Пинайте изготовителя оборудования, пусть купит сертификат и подпишет драйверы. На мой взгляд, для любого изготовителя железа несколько сотен долларов в год — не деньги.

Делается это через командную строку, запущенную от имени администратора, командой
bcdedit -set loadoptions DDISABLE_INTEGRITY_CHECKS

Захотите убрать — выполните команду
bcdedit -deletevalue loadoptions

Отключение(включение) проверки возможно лишь в 32-разрядной ОС (по умолчанию она отключена). В 64-разрядной ОС проверку можно отключить лишь временно, до следующей перезагрузки ПК(во время загрузкиперезагрузки ПК нажать F8 и в появившемся меню выбрать соответствующий пункт).То же действие допустимо и в 32-разрядной ОС.

В x64 делаете так: Выполнить gpedit.msc => Конфигурация_пользователя => Административные_шаблоны => Система => Установка_драйвера => Цифровая_подпись_драйверов_устройств => Поставить в Отключено.
Всё. Никакого гемороя нет. И никаких подписей не нужно, маразм это.
Либо путем подписания драйверов — например:
1. Скачиваем программу: Driver Signature Enforcement Overrider v1.2
2. Отключаем Контроль учетных записей пользователей (UAC).
3. Запускаем программу.
4. Включаем тестовый режим, установив переключатель в положение «Enable Test Mode». Кстати, здесь же предусмотренно обратное действие «Disable Test Mode», отключающее тестовый режим.
5. Выпишите список драйверов (их полный путь и название)для своего устройства. Для этого следует зайти в «Свойства системы» — «Диспетчер устройств» найти там устройство с «проблемным» драйвером и посмотреть сведения о драйверах.
5. Переписываем папки с драйверами в отдельный каталог и добавляем подписи для непроверенных системных файлов. Для этого выберите «Sign a System File» и введите имя файла, включая полный путь. Например, если файл драйвера ATITool64.sys расположен в каталоге C:WindowsSystem32Drivers, то вам необходимо указать C:WindowsSystem32DriversATITool64.sys. В случае если необходимо подписать несколько файлов, то просто повторяем эту процедуру несколько раз. Но настоятельно рекомендую делать это в отдельной папке и потом ставить драйвер, а не в System 32.
5. Перезагружаем компьютер.

Конечно, перед этим рекомендую пнуть сюппорт производителя, путем написания официального письма для официального ответа про отсутствие поддержки Vista x64 или Win7 x64 (у них драйвера пересекаются часто).

  • Предложено в качестве ответа Vinokurov Yuriy Moderator 16 ноября 2009 г. 10:59
  • Помечено в качестве ответа Vinokurov Yuriy Moderator 1 декабря 2009 г. 9:34

В x64 делаете так: Выполнить gpedit.msc => Конфигурация_пользователя => Административные_шаблоны => Система => Установка_драйвера => Цифровая_подпись_драйверов_устройств => Поставить в Отключено.
Всё. Никакого гемороя нет. И никаких подписей не нужно, маразм это.
Либо путем подписания драйверов — например:
1. Скачиваем программу: Driver Signature Enforcement Overrider v1.2
2. Отключаем Контроль учетных записей пользователей (UAC).
3. Запускаем программу.
4. Включаем тестовый режим, установив переключатель в положение «Enable Test Mode». Кстати, здесь же предусмотренно обратное действие «Disable Test Mode», отключающее тестовый режим.
5. Выпишите список драйверов (их полный путь и название)для своего устройства. Для этого следует зайти в «Свойства системы» — «Диспетчер устройств» найти там устройство с «проблемным» драйвером и посмотреть сведения о драйверах.
5. Переписываем папки с драйверами в отдельный каталог и добавляем подписи для непроверенных системных файлов. Для этого выберите «Sign a System File» и введите имя файла, включая полный путь. Например, если файл драйвера ATITool64.sys расположен в каталоге C:WindowsSystem32Drivers, то вам необходимо указать C:WindowsSystem32DriversATITool64.sys. В случае если необходимо подписать несколько файлов, то просто повторяем эту процедуру несколько раз. Но настоятельно рекомендую делать это в отдельной папке и потом ставить драйвер, а не в System 32.
5. Перезагружаем компьютер.

Конечно, перед этим рекомендую пнуть сюппорт производителя, путем написания официального письма для официального ответа про отсутствие поддержки Vista x64 или Win7 x64 (у них драйвера пересекаются часто).

Проблема с драйвером USB web-камеры Media-Tech 4016, в политиках пробовал «отключено» или «включено» параметр «игнорировать» эффекта ноль, при загрузке через F8 драйвер установился устройство работает нормально. Второй способ — подпись драйвера не помогает, программа подписывает, после перезагрузке драйвер не подписан( всё делал по пунктам).

Есть предложения какие ещё могут быть варианты?

Все о подписи драйверов Windows

Как известно в х64 битных платформах была введена процедура обязательной цифровой подписи всего того, что может попасть в ядро системы, а именно драйверов. О том, на сколько это эффективно и оправданно можно долго спорить, но только одно можно сказать точно — гимора разработчикам тут определенно добавилась, особенно тем, кто раньше никогда подписями не занимался. Также для многих стало крайне не очевидно, каким образом разрабатывать драйвер, когда нет на руках валидного сертификата, а тестировать ведь как-то надо. Вот сча я попытаюсь в краткой и доступной форме рассказать о том как это все делается.

Итак, прежде всего, я бы хотел выделить два типа сертификатов, которые я буду рассматривать в рамках данной статьи — тестовый и настоящий. Разница состоит в том, что настоящий сертификат подписан доверенным CA (Certification Authorities — доверенный издатель), типа VeriSign, GlobalSign ну или самим Microsoft, а тестовый подписан самопальным сертификатом типа от Васи Пупкина.

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

  1. Сгенерить сам сертификат и установить его. Это можно сделать с помощью тулзы makecert, например так:
    Makecert -r -pe -ss PrivateCertStore -n «CN=TestCertforWDK» TestCert.cer
    где
    PrivateCertStore — название хранилища
    TestCertforWDK — название самого сертификата
    TestCert.cer — имя файла с сертификатом
    (эта тулза входит в комплект WDK 6000/6001 и расположена bin/SelfSign, в WDK 7600 она почему то не входит. )
  2. Добавить этот сертификат в хранилище с доверенным корневыми CA. Открываем в mmc консоль Сертификаты (Run->mmc->File->Add/Remove Snap-in->Certificates) там находим свой сертификат (например в хранилище PrivateCertStore), копируем его в доверенные корневые издатели (Trusted Root Certification Authorities).
  3. Разрешить тестовые подписи. Для этого прописываем в администраторской консоли:
    bcdedit.exe –set TESTSIGNING ON
    и перезагружаемся, в итоге на десктопе, после перезагрузки, по углам красоваться соответствующие надписи.

Настоящий сертификат
Тут тоже не все так просто. Дело в том, что не любой CA может выдавать сертификаты для подписи драйверов Windows, а только те, которые авторизованы самой Microsoft, это значит, что корневые сертификаты этих издателей должны быть подписаны Microsoft — что, как раз и выражается в виде этого кросс-сертификата. Вот именно из-за отсутствия кросс-сертификата — тестовая подпись, никогда не будет работать как настоящая. Список доверенных CA, которые обладают такими кросс-сертификатами — представлен тут, там же можно скачать и сами кросс-сертификаты.
После того, как вы выложите несколько сотенок $$$ доверенному центру сертификации, они выдадут вам .pfx файл в котором будут содержаться публичный и приватный ключи. Вы его запустите и с помощью нехитрого диалога (как на рисунке ниже), установите в систему.

Подпись драйвера
Процесс подписи для тестового и настоящего сертификата во многом похожи, различия состоят лиш в том, что:

  • для тествой подписи не нужен кросс-сертификат
  • для тествой подписи можно не делать таймстамп

Итак приступим

  1. Качаем тулзу для подписи — signtool (тоже входит в комплект WDK6000/6001)
  2. Подписываем, с тестовым сертификатом:
    signtool sign /v /s PrivateCertStore /n «TestCertforWDK» driver.sys
    где
    PrivateCertStore — имя хранилища
    TestCertforWDK — имя тестового сертификата
    driver.sys — имя драйвера

    с настоящим сертификатом:
    signtool sign /v /ac MSCV-GlobalSign.cer /s PrivateCertStore /n «YourTrueCertName» /t http://timestamp.globalsign.com/scripts/timstamp.dll driver.sys
    где
    MSCV-GlobalSign.cer — имя кросс-сертификата
    YourTrueCertName — имя настоящего сертификата
    timestamp.globalsign.com/scripts/timstamp.dll — адрес таймстампингового центра, в моем случае global sign

Далее драйвер можно установить программно с помощью специальных АПИ либо с помощью замечательной тулзы KmdManager.

Подпись пакета драйверов
В реальной жизни подписи самого драйвера оказывается недостаточно, дело в том, что драйвера устройств как правило поставляются в комплекте с inf-файлом, в котором содержится информация о драйвере и устройствах которые он обслуживает. В этом случае необходимо будет сгенерить cat-файл, который содержит в себе инфу о всех файлах пакета, а потом подписать его точно также, как подписывали драйвер.
Для генерации cat-файла и его подписи нам понадобится:

  1. Корректный inf-файл (запасайтесь бубнами ребятки)
  2. Тулза которая генерит этот cat-файл из inf-файлов — inf2cat (эта тулза входит в комплект WDK6001/7600, и написана, как не странно, на .NET)
  3. После чего генерим cat-файл, например так
    inf2cat.exe /driver:releaseamd64 /os:Vista_x64,Server2003_x64,Server2008_x64
    где
    releaseamd64 — папка в которой находится inf-файл и драйверы
    Vista_x64,Server2003_x64,Server2008_x64 — список ОС, на которых должен работать драйвер
  4. Подписываем его точно также, как и драйвер
    signtool sign /v /ac MSCV-GlobalSign.cer /s PrivateCertStore /n «YourTrueCertName» /t http://timestamp.globalsign.com/scripts/timstamp.dll catalog.cat
    сам драйвер при этом подписывать не обязательно.
  5. Проверяем, что все хорошо подписалось, для этого открываем свойство .cat файла (или драйвера) и смотрим вкладку Digital Signatures — если есть то можем полюбоваться на результат, если нет, то где-то накосячили.
    Также более достоверно можно проверить с помощью командной строки
    signtool verify /pa /v /c catalog.cat

EasySign
В результате всех моих исследований на предмет САБЖ-а, я некатал по-быстрому простенькую программку EasySign, которая может подписывать дрова без дополнительного гимора с командной строкой и bat-файлами. Возможно кому-то будет полезно.


Саму прогу можно скачать тут, а мануалку почитать ниже:
  1. Вбиваем в Inf Dir путь к папке где лежит сам .inf файл и все необходимые файлы к нему прилагающиеся.
  2. Выбираем ОСи где работает драйвер.
  3. Cross Cert — указываем путь к кросс-сертификату, если нужно подписать драйвер по-настоящему
  4. Cert Store — названия хранилища, где лежит наш сертификат (например PrivateCertStore)
  5. Cert Name — название сертификата (например TestCertforWDK), если сертификат один в хранилище, то можно и не заполнять это поле.
  6. Time Stamp — адрес таймстампингового центра, для тестового сертификата — можно оставить пустым
  7. Файлы которые надо подписать, тут нужно обязательно добавить cat файл (если еще не создан, то прописать его имя вручную), а также можно добавить все файлы драйверов
  8. Generate Catalog Only — если подписывать не надо, а только создать .cat файл
  9. Жмем Sign — чтобы создать cat-файл и подписать, жмем Log — чтобы почитать что произошло, часто бывают ошибки, например неправильно составлен inf-файл, либо signtool чего-то не нашел и т.п.

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Цифровая подпись драйверов. Отключение проверки цифровой подписи

Содержание

Введение

Драйвер — это программа, обеспечивающая взаимодействие компьютера с оборудованием и устройствами. Без драйверов невозможна нормальная работа подключенного к ПК оборудования, например видеоадаптера или принтера.

В большинстве случаев драйверы поставляются вместе с Windows, или их можно найти, перейдя в центр обновления Windows на панели управления и проверив наличие обновлений. Если в Windows отсутствует нужный драйвер, то обычно его можно найти на веб-сайте производителя

При подключении к компьютеру нового устройства ОС Windows пытается найти и установить драйвер для этого устройства. Иногда можно увидеть уведомление, что драйвер не подписан, был изменен после подписывания или не может быть установлен ОС Windows. Всегда можно решить, следует ли устанавливать неподписанный или измененный драйвер.

Подписанный драйвер — это драйвер устройства, имеющий цифровую подпись. Цифровая подпись является электронной меткой безопасности, которая может указать издателя данного программного обеспечения, а также факт изменения драйвера после его подписания. Если драйвер подписан издателем и достоверность подписи подтверждена центром сертификации, то можно быть уверенным, что драйвер выпущен именно этим издателем и не подвергался изменениям.

Примечание: 64-разрядные версии ОС Windows блокируют установку драйверов без действительной цифровой подписи (или измененных после ее нанесения). Это сообщение появляется только при попытке установить такой драйвер на 64-разрядную версию Windows. Если при установке драйвера появляются подобные сообщения, посетите веб-сайт изготовителя устройства для получения драйвера устройства с цифровой подписью.

Устанавливать драйвера без цифровой подписи или нет

Невозможно с уверенностью определить, что файл без действительной цифровой подписи получен из указанного источника и не был подделан (возможно, с помощью вируса) после его публикации. Желательно избегать открытия файла, если нет уверенности в достоверности источника и безопасности содержимого файла. Даже действительная цифровая подпись не гарантирует, что содержимое файла является безопасным. На основе удостоверения издателя файла и данных об источнике его загрузки следует решить, можно ли доверять содержимому файла

Выбор действия при установке драйвера

При установке нового драйвера Windows отобразит одно из предупреждений:

  • Этот драйвер не подписан
  • Windows не может проверить издателя данного драйвера
  • Системе Windows требуется драйвер с цифровой подписью

К сожалению, не существует надежных источников сведений, которые могут указать, кто опубликовал неподписанный драйвер. Любой может изменить содержимое неподписанного драйвера. Первоначальная версия неподписанного драйвера действительно могла прийти от изготовителя устройства, но если драйвер не подписан, то возможно, что кто-то его изменил. Нет способа узнать, был ли драйвер изменен злоумышленником. В настоящее время большинство изготовителей подписывают созданные ими драйверы перед их реализацией

Следует устанавливать неподписанный драйвер только в том случае, если он получен с лицензионного диска изготовителя.

Отключение проверки цифровой подписи драйвера

Если вы приняли решение отключить проверку цифровой подписи, то это делается так.

Нажмите клавишу Win + R или Пуск — Выполнить и введите команду gpedit.msc

Откроется Редактор локальной групповой политики. Находим Конфигурация пользователя — Административные шаблоны — Система — Установка драйвера.

В правой половине окна находим Цифровая подпись драйвера устройств. Два раза кликаем или правой клавишей на этом пункте и выбираем Изменить.

В этом окне выбираем пункт Отключить. Применить и ОК. Если выбрать Включить, то дополнительно можно выбрать как системе реагировать на драйвер без цифровой подписи

Конечно выбор всегда за вами, но не так часто приходиться переустановливать драйвера, поэтому лучше лишний раз прочитать предупреждение и подумать, чем потом искать проблему.

Подписывание драйверов

— драйверы для Windows

  • Статья
  • .
  • 2 минуты на чтение
Эта страница полезна?

Оцените свой опыт

да Нет

Любой дополнительный отзыв?

Отзыв будет отправлен в Microsoft: при нажатии кнопки «Отправить» ваш отзыв будет использован для улучшения продуктов и услуг Microsoft.Политика конфиденциальности.

Представлять на рассмотрение

В этой статье

Подпись драйвера связывает цифровую подпись с пакетом драйвера.

При установке устройства

Windows используются цифровые подписи для проверки целостности пакетов драйверов и идентификации поставщика (издателя программного обеспечения), который предоставляет пакеты драйверов.Кроме того, политика подписи кода режима ядра для 64-разрядных версий Windows Vista и более поздних версий Windows указывает, что драйвер режима ядра должен быть подписан для загрузки драйвера.

Примечание Windows 10 для настольных выпусков (Home, Pro, Enterprise и Education) и драйверы режима ядра Windows Server 2016 должны быть подписаны панелью мониторинга Windows Hardware Dev Center, для чего требуется сертификат EV. Дополнительные сведения см. В разделе «Политика подписи драйверов».

Все драйверы для Windows 10 (начиная с версии 1507, Threshold 1), подписанные Центром разработки оборудования, подписаны SHA2.Подробные сведения о версиях операционной системы см. В разделе Требования к подписи по версиям.

Двоичные файлы драйвера режима ядра

, встраиваемые подписанные двойными (SHA1 и SHA2) сертификатами от стороннего поставщика сертификатов для операционных систем до Windows 10, могут не загружаться или могут вызвать сбой системы в Windows 10. Чтобы решить эту проблему, установите KB 3081436.

В этом разделе

Общие сведения о подписании драйверов в Windows Vista и более поздних версиях Windows см. В техническом документе «Цифровые подписи для модулей ядра в системах под управлением Windows Vista».

Учебное пособие по подписанию драйверов

для Windows — драйверы для Windows

  • Статья
  • .
  • 2 минуты на чтение
Эта страница полезна?

Оцените свой опыт

да Нет

Любой дополнительный отзыв?

Отзыв будет отправлен в Microsoft: при нажатии кнопки «Отправить» ваш отзыв будет использован для улучшения продуктов и услуг Microsoft.Политика конфиденциальности.

Представлять на рассмотрение

В этой статье

В этом руководстве представлен обзор и подробно описаны шаги для подписи двоичных файлов драйверов для Windows в одном консолидированном месте. Следующие подтемы описывают процесс:

Подписание теста Подписание выпуска Устранение неполадок при установке подписи драйвера

Обзор

Начиная с Windows Vista, 64-разрядные версии Windows требовали, чтобы все программное обеспечение, работающее в режиме ядра, включая драйверы, было подписано цифровой подписью для загрузки.

Microsoft предоставляет следующие два способа поставить цифровую подпись для драйверов:

  1. Сертифицируйте свой драйвер в Microsoft, и Microsoft поставит для него подпись. Когда ваш пакет драйверов проходит сертификационные тесты, он может быть подписан Лабораторией качества оборудования Windows (WHQL). Если ваш пакет драйверов подписан WHQL, его можно распространять через программу Windows Update или другие механизмы распространения, поддерживаемые Microsoft.
  2. Поставщики или разработчики драйверов могут получить сертификат публикации программного обеспечения (SPC) от авторизованного центра сертификации (CA) Microsoft и использовать его для собственной подписи режима ядра и двоичных файлов пользовательского режима.

В случае загрузочных драйверов во время запуска системы, драйверов, которые загружаются системным загрузчиком (Windows Vista и более поздние версии Windows), поставщики должны использовать сертификат Software Publishers (SPC) для встраивания и подписи своего двоичного образа драйвера. файл.

Примечание Политика обязательной подписи кода режима ядра применяется ко всему программному обеспечению режима ядра для систем на базе x64, работающих в Windows Vista и более поздних версиях Windows. Однако Microsoft рекомендует издателям ставить цифровую подпись для всего программного обеспечения режима ядра, включая драйверы устройств (включая драйверы пользовательского режима) для 32-разрядных систем.Windows Vista и более поздние версии Windows, проверьте подписи режима ядра в 32-разрядных системах. Программное обеспечение для поддержки защищенного медиаконтента должно иметь цифровую подпись, даже если оно 32-битное.

Драйверы пользовательского режима, такие как драйвер принтера, устанавливаются и работают на компьютере на базе x64. Во время установки пользователю откроется диалоговое окно с просьбой подтвердить установку драйвера. Начиная с Windows 8 и более поздних версий Windows, установка не будет продолжена, если эти пакеты драйверов также не подписаны.

Следующие ресурсы описывают подписку драйвера более подробно:

  • Основная тема Driver Signing
  • Подтема «Как освободить подпись модуля ядра» в пошаговом руководстве по подписи кода в режиме ядра описывает, что вам следует знать о подписи кода режима ядра. Информация в документе также относится к подписи драйверов пользовательского режима.
  • Файл selfsign_readme.htm в Windows 7 WDK находится в установочном каталоге WDK, \ WinDDK \ 7600.16385.1 \ src \ general \ build \ driversigning. В этом каталоге также есть командный файл selfsign_example.cmd, который можно редактировать для запуска команд подписи драйвера. Файл selfsign_readme.htm в Windows 8.1 WDK находится в C: \ Program Files (x86) \ Windows Kits \ 8.1 \ bin \ selfsign и содержит ссылки на дополнительную информацию о подписи драйверов.

Практический код Windows и подпись драйверов

Если вы когда-либо устанавливали какое-либо программное обеспечение или драйверы в Windows, вы, вероятно, видели диалоговое окно с названием компании или лица, опубликовавшего это программное обеспечение.Это означает, что издатель криптографически подписал свою работу. Подпись вашего программного обеспечения важна: показывая более приятный диалог для конечного пользователя, он дает конечным пользователям больше уверенности в том, что они не устанавливают вредоносное ПО. В случае драйверов устройств, подпись даже требуется некоторыми версиями Windows в определенных ситуациях.

Если вы разработчик, разбирающийся в том, как подписывать драйверы или программное обеспечение, цель этого руководства — рассказать вам все, что вам нужно знать, чтобы вы могли делать это правильно.

Меня зовут Дэвид Грейсон, я работаю в Pololu Robotics & Electronics. В 2012 году я подписал все драйверы USB нашей компании и большинство наших установщиков для Windows. На своем пути я столкнулся с таким количеством проблем, которых можно было бы легко избежать, если бы кто-нибудь рассказал мне о них заранее. Если вы проходите через тот же процесс, я искренне надеюсь, что этот документ поможет вам прояснить всю вашу путаницу, а сэкономит вам много времени .Я научился на собственном горьком опыте, и теперь вы можете научиться легким путем.

Многие из этих сведений можно проверить в официальной документации Microsoft, которую можно найти на MSDN, и я постараюсь при необходимости ссылаться на официальную документацию. Официальными документами по подписи кода в режиме ядра являются kmsigning.doc и KMCS_walkthrough.doc. Это довольно хорошие ресурсы, но они относятся к 2007 году и поэтому не содержат информации о Windows 7 и более поздних версиях, SHA-2 или портале Windows Hardware Developer Center Dashboard.Кроме того, их объем более ограничен, чем объем этого документа, потому что они не говорят о подписи исполняемых файлов. Microsoft также объявляет об изменениях в своих требованиях к подписи кода / драйверов в сообщениях блога MSDN (см. Раздел ссылок), но у них нет обновленной документации, которая дает вам полную картину. Поэтому многое из того, что я здесь говорю, на самом деле является выводами, которые я сделал из моих собственных экспериментов. Когда я говорю вам что-то, что я определил экспериментально, я буду использовать такие фразы, как «похоже» или «по моему опыту».Когда мои эксперименты будут противоречить официальной документации, я так и скажу.

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

Этот документ относится только к 32-разрядной версии Windows XP, Windows Vista, Windows 7 и Windows 8, Windows 8.1 и Windows 10.

Самая полезная часть этого документа — это раздел требований к подписи.

Этот документ был первоначально опубликован в январе 2013 года и описывал многие проблемы, которые у меня были с сертификатами, использующими алгоритм хеширования SHA-2. Из-за всех этих проблем я рекомендовал придерживаться SHA-1. С тех пор Microsoft объявила, что в долгосрочной перспективе они намерены не доверять SHA-1 в Windows во всех контекстах. Следовательно, SHA-1 не будет долгосрочным решением, и большинству людей, вероятно, следует использовать вместо него SHA-2.В июле 2015 года я провел серию систематических экспериментов с разными типами подписей. Используя данные этих экспериментов, я обновил этот документ, чтобы лучше охватить SHA-2 и последние обновления от Microsoft, которые делают его жизнеспособным вариантом. С тех пор я слежу за новыми разработками и обновляю эту статью.

Практически все, что вы делаете с компьютером, включая подписывание кода и драйверов, использует некоторую форму криптография с открытым ключом.Существует несколько различных систем криптографии с открытым ключом, включая RSA. (который используется для подписи кода Windows) и ECDSA. Я не собираюсь подробно объяснять математику, лежащую в основе какой-либо из этих систем, но я дать вам представление о том, что они позволяют нам делать. Это поможет вам понять, что на самом деле делает цифровая подпись.

Первое, что дает нам криптографическая система с открытым ключом, — это способ сгенерировать пару ключей , который состоит из открытого ключа и закрытого ключа .Как следует из названий, закрытый ключ должен храниться в секрете, но вы можете передать открытый ключ кому угодно.

Многие системы криптографии с открытым ключом поддерживают создание цифровых подписей. Имея цифровое сообщение, которое вы хотите подписать, и закрытый ключ, вы можете запустить специальный алгоритм для создания цифровой подписи , серия байтов, подтверждающая свойства сообщения. В частности, любой человек в мире может использовать ваш открытый ключ вместе с сообщением. и его подпись, чтобы убедиться, что подпись была создана кем-то, у кого был доступ на ваш закрытый ключ (надеюсь, вы), и любой в мире может проверить, что подписанное сообщение не было изменено с момента его подписания.

Еще одна важная концепция, которую необходимо понять, — это хэш-функция , которую также называют алгоритмом дайджеста или алгоритмом отпечатка пальца. Хеш-функция — это способ преобразования некоторой последовательности байтов в меньшую последовательность байтов, обычно фиксированной длины, с тем свойством, что очень сложно сделать два входа в хеш-функцию, которые дают одинаковый результат. SHA-1 — широко используемая хеш-функция, но считается устаревшей из-за теоретических и практических атак на нее.SHA-2 — это новое семейство хэш-функций, состоящее из SHA-224, SHA-256, SHA-386 и SHA-512. Хеш-функции хорошо работают с подписями, потому что более эффективно подписать хэш файла, чем подписать все содержимое файла.

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

Если щелкнуть подписанный файл правой кнопкой мыши и перейти в «Свойства», вы увидите вкладку «Цифровые подписи».

На вкладке «Цифровые подписи» вы можете щелкнуть «Подробности», чтобы открыть диалоговое окно «Сведения о цифровой подписи». Цифровая подпись создается издателем программного обеспечения.

Вы можете нажать «Просмотр сертификата», чтобы просмотреть сертификат, встроенный в подпись файла.Сертификат приобретается в центре сертификации, например Verisign.

Вы можете щелкнуть Certification Path, чтобы просмотреть большинство сертификатов в цепочке доверия. Эти сертификаты предназначены для подтверждения того, что ваш сертификат был выдан надежной компанией. Вы можете дважды щелкнуть любой сертификат, отображаемый в пути сертификации, чтобы получить информацию о нем.

Некоторые сертификаты, указанные в пути сертификации, поступают из файла, подпись которого вы проверяете.Другие сертификаты могут поступать из хранилища сертификатов вашего компьютера, что вы можете увидеть, запустив certmgr.msc. В частности, похоже, что Windows использует сертификаты из списка промежуточных центров сертификации и списка доверенных корневых центров сертификации для построения пути сертификации. К сожалению, я не знаю хорошего способа посмотреть на подписанный файл и точно сказать, какие сертификаты в него встроены.

Имена, показанные в Пути сертификации, являются «понятными именами» сертификатов, которые вы можете настроить в certmgr.msc. Иногда несколько сертификатов могут иметь одно и то же понятное имя, что затрудняет понимание того, что происходит. Чтобы устранить путаницу, я люблю дважды щелкать сертификаты и смотреть на «Идентификатор ключа субъекта» и «Идентификатор ключа авторизации». Я думаю, что идентификатор ключа субъекта представляет собой объект, которому вы можете доверять, а каждый сертификат просто представляет собой передачу доверия от некоторого органа к субъекту. Если идентификаторы центра и субъекта совпадают, это называется «самоподписанным» или «корневым» сертификатом.

Один и тот же предмет можно найти в нескольких разных сертификатах. Например, «Корневой ЦС GlobalSign — R3» (идентификатор ключа субъекта 8f f0 4b 7f a8 2e 45 24 ae 4d 50 fa 63 9a 8b de e2 dd 1b bc) имеет свой собственный корневой сертификат, а также перекрестный сертификат, выданный корневой центр сертификации GlobalSign, который кажется более старым и лучше поддерживаемым центром.

Когда-нибудь я мог бы расширить этот раздел, включив в него подробности о различных полях, которые вы можете видеть в этих диалогах, и о том, почему эти части информации необходимы.А пока вы должны щелкнуть по себе и изучить некоторые подписи.

Вы также можете использовать шестнадцатеричный редактор, такой как WinHex, для проверки встроенных подписей; вы можете легко увидеть имена подписывающей стороны и организаций в пути сертификации. Одной из замечательных особенностей WinHex является то, что он позволяет сравнивать два файла и выделять различия в них, так что вы можете точно видеть, какие байты в заголовке изменены и какие байты добавляются в конец при добавлении подписи.

Чтобы успешно выпустить свое программное обеспечение, вы должны убедиться, что ваша цифровая подпись соответствует всем необходимым требованиям, изложенным ниже. Требования обобщены в таблицах ниже, а затем термины в таблицах определены и объяснены после таблиц . Каждая ячейка данных каждой таблицы содержит логическое выражение, которое объединяет различные требования с использованием операций and (&) и or.Я сильно подозреваю, что этот список неполный, поэтому, пожалуйста, оставьте комментарий, если есть что добавить к нему.

Если вы просто заботитесь о работе своего программного обеспечения и не возражаете, если пользователь увидит пугающее предупреждающее сообщение, то, по моему опыту, ваша подпись должна соответствовать следующим требованиям:

Требования к подписи для нормальной работы
Запуск исполняемого файла Установка пакета драйверов Загрузка модуля ядра
в Windows XP нет нет нет
для 32-разрядной версии Windows Vista Без знака или SHA ‑ 1 или KB2763674 нет нет
для 64-разрядной версии Windows Vista нет MCVR & / t & SHA-1
в Windows 7 нет нет MCVR и (SHA ‑ 1 или KB3033929)
и поэтапный отказ SHA-1
в Windows 8, 8.1 нет Прекращение использования TRCA и SHA-1 MCVR и SHA-1 поэтапный отказ
в Windows 10 нет Прекращение использования TRCA и SHA-1 MCVR и поэтапный отказ от SHA-1 и портал

Если вы заботитесь о том, чтобы ваше программное обеспечение работало, и вы хотите отображаться как подтвержденный издатель в любых диалоговых окнах с предупреждениями и любых диалоговых окнах свойств, по моему опыту, ваша подпись должна соответствовать следующим требованиям:

Требования к подписи для хорошего внешнего вида
Запуск исполняемого файла Установка пакета драйверов Загрузка модуля ядра
в Windows XP TRCA & / t & SHA-1 sig WHQL?
для 32-разрядной версии Windows Vista TRCA & / t & SHA-1 sig
& (SHA ‑ 1 или KB2763674)
TRCA & / т?
для 64-разрядной версии Windows Vista TRCA & / т?
в Windows 7 Прекращение использования TRCA и SHA-1 Прекращение использования TRCA и SHA-1?
в Windows 8, 8.1 Прекращение использования TRCA и SHA-1 Прекращение использования TRCA и SHA-1?
в Windows 10 Прекращение использования TRCA и SHA-1 Прекращение использования TRCA и SHA-1?
Прекращение использования SHA-1

В статье «Применение сертификатов SHA1 в Windows» от Microsoft описывается, как SHA-1 в конечном итоге будет недоверчивым в Windows во всех контекстах.Чтобы избежать проблем в будущем, лучше всего начать использовать SHA-2 (или выше) для всего, включая дайджест файла, основной сертификат, дайджест отметки времени и сертификат отметки времени.

Портал

Microsoft объявила , что все новые драйверы режима ядра Windows 10 должны отправляться на портал Windows Hardware Developer Center Dashboard и иметь цифровую подпись. Для обеспечения обратной совместимости Windows 10 по-прежнему будет разрешать драйверы режима ядра с подписями из более старых сертификатов при определенных условиях, но вам потребуется более старый сертификат, поэтому для большинства людей это не очень практично.Портал принимает от вас отправленные драйверы только в том случае, если вы подписываете их с помощью сертификата расширенной проверки (EV), который обычно дороже обычного сертификата.

Microsoft объявила, что это правило будет применяться только в системах Windows 10, которые были недавно установлены в сборке 1607 или более поздней, с включенной безопасной загрузкой.

Раньше я думал, что в первоначальном объявлении есть действительно хорошая лазейка, которая позволит большинству людей избежать хлопот с использованием портала, но формулировка в FAQ объявления 2016-07-26 дает понять, что есть такой лазейки нет.

Дополнительные сведения о портале см. В разделе «Загрузка модуля ядра».

TRCA

В приведенных выше таблицах TRCA означает, что цепочка доверия подписи должна возвращаться к сертификату в списке доверенных корневых центров сертификации (TRCA) пользователя. Как вы можете видеть в certmgr.msc, в списке TRCA есть сертификаты от нескольких известных компаний, таких как Verisign, Globalsign, Digicert и Go Daddy.Многие сертификаты изначально отсутствуют в списке, но Window попытается автоматически установить их из различных источников, когда они необходимы для проверки подписи.

Один из способов загрузки корневых сертификатов Windows — подключение к Центру обновления Windows через Интернет. Это называется программой Microsoft Root Cerificate Program. Однако я бы не стал полагаться на автообновление. По логике вещей, это не должно работать, если компьютер отключен от Интернета.По моему опыту, даже при подключении к Интернету он не всегда работает надежно.

Windows также может получить необходимые сертификаты из crypt32.dll, и я думаю, что этот метод намного быстрее и надежнее.

Поэтому лучше всего убедиться, что ваша цепочка доверия восходит к сертификату, который включен в новые установки Windows, либо в TRCA, либо в crypt32.dll. К сожалению, у меня нет авторитетного списка этих сертификатов.Требование TRCA задокументировано в kmsigning.doc. Я подозреваю, что списки «Доверенные издатели» или «Доверенные люди» будут работать так же хорошо, если вы убедите своих пользователей установить там сертификат. Обычно вам не нужен кросс-сертификат (указанный с параметром / ac в signtool) для удовлетворения этого требования. Однако промежуточный сертификат (который автоматически используется во время подписания, если он установлен в вашем хранилище сертификатов) может помочь, расширив вашу цепочку доверия до более старого и лучше поддерживаемого сертификата.

MCVR

В приведенных выше таблицах MCVR означает, что цепочка доверия подписи должна возвращаться к корневому сертификату проверки кода Microsoft или другому сертификату, которому доверяет ядро. Любая подпись, которую вы получаете через процесс WHQL, уже должна удовлетворять этому требованию. Это очень четко задокументировано в kmsigning.doc, где объясняется, что ядро ​​не имеет доступа к списку доверенных корневых центров сертификации.Для удовлетворения этого требования обычно требуется перекрестный сертификат. Microsoft публикует полный список перекрестных сертификатов для подписи кода в режиме ядра.

WHQL

Подпись должна исходить из программы WHQL. Насколько я понимаю, вы можете отправить свой драйвер в Microsoft или третьему лицу для тестирования. Если с вашим драйвером все в порядке, они подпишут ваш драйвер и дадут вам законное разрешение на использование логотипа Windows для продажи вашего продукта.WHQL — это , на самом деле никогда не требовалось для работы вашего программного обеспечения или драйверов и, вероятно, сложнее, чем просто использовать стандартный сертификат подписи кода. Я никогда не получал драйвер, подписанный WHQL, поэтому мой опыт работы с ним ограничен.

Без знака

Это требование верно, если файл просто не имеет подписи. Имейте в виду, что в приведенной выше таблице используются логические выражения, поэтому, когда я пишу «X, Y или Z», это означает, что если любое из этих трех истинно, то ваша подпись будет работать.

SHA-1

Должна присутствовать подпись, и она не должна использовать SHA-2 каким-либо образом, только SHA-1. Это относится к подписи самого файла и подписям, которые обеспечивают цепочку доверия к вашему сертификату. Это, вероятно, также относится к метке времени и ее цепочке доверия. Обратите внимание, что Microsoft удаляет SHA-1 и в конечном итоге перестанет доверять ему в Windows во всех контекстах, поэтому использование SHA-1 не будет долгосрочным решением.

SHA-1 подпись

Подпись должна быть создана с использованием SHA-1 в качестве алгоритма дайджеста, но это нормально, если части цепочки доверия сертификата используют SHA-2. Это также может относиться к алгоритму дайджеста, используемому меткой времени.

/ т

В приведенных выше таблицах / t означает, что подпись должна иметь отметку времени с использованием параметра signtool / t вместо / tr .

KB2763674

В приведенных выше таблицах KB2763674 означает, что необходимо установить KB2763674, что, в свою очередь, требует Windows Vista SP2.

KB3033929

В приведенных выше таблицах KB3033929 означает, что необходимо установить KB3033929.

Не используйте пробелы в имени файла INF. Это дополнительное требование для установки пакета драйверов, о котором сообщил Джимми Каз.Я сам не тестировал, но он говорит, что пакет драйвера будет выглядеть неподписанным в Windows 7, если в имени INF-файла есть пробелы.

Приведенный выше контент представляет собой краткое изложение всех требований к коду и подписи драйверов, о которых я знаю. В следующих трех разделах я объясню каждое из требований и объясню, чего вы можете ожидать, если ваше программное обеспечение им не соответствует.

Цифровые подписи могут быть непосредственно встроены в исполняемые файлы (EXE-файлы).Они также могут быть встроены в файлы установщика Windows (файлы MSI), и все, что я скажу о исполняемых файлах, также применимо к файлам установщика Windows. Windows проверяет подпись внутри исполняемого файла в двух случаях:

  • Если файл был загружен из Интернета (включая сетевые диски), Windows покажет сообщение «Открыть файл — предупреждение безопасности», когда пользователь попытается запустить файл. Информация об издателе в предупреждении исходит из подписи, встроенной в файл.Обычно предупреждение представляет собой простое диалоговое окно, но в Windows 8 и более поздних версиях предупреждение иногда представляет собой диалоговое окно SmartScreen, которое занимает весь экран. Ниже показаны два примера:
  • Если исполняемый файл запрашивает права администратора, что также называется повышением прав, Windows отобразит приглашение UAC. Информация об издателе в приглашении исходит из подписи, встроенной в файл. Ниже показаны два примера:

Windows никогда не требовала подписи для исполняемых файлов.Тем не менее, неплохо подписать свой исполняемый файл, чтобы всякий раз, когда пользователь видит предупреждающее сообщение об этом, он видел ваше имя как издателя, а не сообщал, что издатель неизвестен.

По моему опыту, для правильной работы вашей подписи с исполняемым файлом она должна иметь цепочку доверия, которая восходит к сертификату в списке доверенных корневых центров сертификации пользователя, который вы можете увидеть, запустив certmgr.msc.

Используйте SHA-1 для подписи исполняемого файла, если Windows Vista имеет значение

Даже если ваш сертификат подписан с помощью SHA-2 и имеет сертификаты SHA-2 в своей цепочке доверия, у вас есть выбор, какой дайджест использовать при создании подписи. Чтобы выбрать алгоритм, вы должны передать в signtool либо / fd sha1 , / fd sha256 , либо / fd sha512 .

Если вы хотите, чтобы ваша подпись выглядела правильно в Windows Vista, вам придется использовать SHA-1 в качестве алгоритма дайджеста при подписании исполняемого файла.По моему опыту, подписи SHA-2 будут считаться недействительными в Windows Vista, а Windows Vista скажет: «Эта цифровая подпись недействительна». когда вы просматриваете детали подписи. Я подозреваю, что Windows XP ведет себя точно так же, но я это не тестировал.

Не забудьте проверить «алгоритм дайджеста» подписи на странице ее свойств, чтобы убедиться, что ваша подпись использует желаемый алгоритм.

Используйте / t для отметки времени исполняемого файла, если Windows Vista имеет значение

При подписании с помощью signtool у вас есть выбор, указать ли сервер отметок времени с помощью параметра / t или параметра / tr .Если вы укажете его с помощью / t , signtool получит метку времени с сервера, используя настраиваемый протокол Microsoft. Если вы укажете его с помощью / tr , signtool получит метку времени с сервера, используя RFC3161. Но это не просто разные протоколы, они также влияют на саму временную метку.

Я экспериментально обнаружил, что временные метки, созданные с помощью / tr , не распознаются в Windows Vista ни для исполняемых файлов, ни для драйверов.Если вы откроете свойства своей подписи в Windows Vista, вы увидите, что метка времени не указана. Я подозреваю, что Windows XP ведет себя точно так же, но я ее не тестировал, а у кого-то еще.

Когда я впервые написал этот документ в 2013 году, я был убежден, что вам следует использовать / tr . Я провел эксперимент, в котором я сделал оба типа меток времени, и обнаружил, что Internet Explorer 10.0.9200.16686 в 64-разрядной версии Windows 7 с пакетом обновления 1 (SP1) и Internet Explorer 10.Версия 0.9200.16688 в 64-разрядной версии Windows 8 пометила исполняемый файл / t как поврежденный или недействительный. Я смог воспроизвести эти результаты в 2015 году, если бы использовал тот же самый файл и браузер, но я не смог воспроизвести их с помощью IE11 или недавно подписанного файла в IE10. Результаты, которые я получил ранее, можно объяснить тонкой ошибкой в ​​реализации сервера меток времени Starfield / t , которая по какой-то причине была обнаружена только IE 10.

Обратите внимание на KB2763674 для Windows Vista SP2

Если ваш сертификат использует SHA-2 или имеет сертификаты SHA-2 в своей цепочке доверия, вам следует знать о KB2763674, обновлении для Windows Vista SP2, распространяемом через Центр обновления Windows.В версиях Windows Vista без этого обновления, когда конечный пользователь дважды щелкает загруженный исполняемый файл с подписью, чья цепочка доверия использует SHA-2, ничего не происходит! Нет сообщений об ошибках или каких-либо действий.

Я считаю, что в Windows Vista есть код, который проверяет подпись исполняемого файла, чтобы показать издателю в диалоговом окне предупреждения для загруженных исполняемых файлов. До обновления этот код, по-видимому, не мог обрабатывать SHA-2 и молча завершал работу.

Есть несколько способов обойти эту проблему. Поскольку количество людей, использующих Windows Vista в наши дни, довольно невелико, вы можете просто добавить в свою документацию пометку, в которой пользователям Windows Vista следует убедиться, что у них установлено это обновление.

Один из обходных путей, который может сделать пользователь, — запустить исполняемый файл из командной строки, тем самым обойдя диалоговое окно с предупреждением и связанную с ним проверку подписи.

Другой обходной путь, который должен сделать пользователь, — это удалить специальный флаг в файловой системе, который отмечает, что файл поступает из Интернета. Я не тестировал это, но надеюсь, что это сработает. В качестве альтернативы вы можете распространять исполняемый файл без подписи.

Похоже, эта проблема не касается установщиков, созданных с помощью NSIS, и я думаю, что знаю почему. Установщики NSIS всегда предварительно повышаются в Windows, поэтому при запуске установщика NSIS вы всегда будете видеть стандартное предупреждение UAC и никогда не увидите специального предупреждения, возникающего при запуске загруженного исполняемого файла.Таким образом можно обойти ошибочный код в Windows Vista.

Пакет драйвера состоит из одного файла INF и файлов, на которые он ссылается. У вас может быть несколько файлов INF в одном каталоге, но, по моему опыту, Windows рассматривает каждый файл INF как отдельный и независимый пакет драйверов. Пакет драйвера можно подписать, сначала сгенерировав файл каталога безопасности (CAT) с криптографическими хэшами всех файлов, а затем встроив подпись в каталог безопасности.Каталог безопасности содержит список имен файлов и хэш содержимого каждого файла; вы можете просто дважды щелкнуть по нему, чтобы просмотреть содержащуюся в нем информацию и увидеть его подпись.

Есть как минимум пять способов установить пакет драйверов. Во-первых, пользователь может щелкнуть правой кнопкой мыши файл INF и выбрать «Установить», если в файле INF есть раздел DefaultInstall. (На самом деле, этот метод работает в Windows 8 и более поздних версиях, даже если в файлах INF нет раздела DefaultInstall.) Во-вторых, программа может вызывать функцию SetupCopyOEMInf. В-третьих, программа или пользователь могут запускать PnPUtil. В-четвертых, пользователь может щелкнуть правой кнопкой мыши соответствующее устройство в диспетчере устройств, выбрать «Обновить программное обеспечение драйвера …», а затем указать Windows каталог, в котором хранится пакет драйвера. В-пятых, пакет драйвера может поставляться с исполняемыми файлами DPInst, которые его устанавливают.

Когда запускается установка пакета драйверов, Windows проверяет наличие подписи и ведет себя по-разному в зависимости от того, что она находит; разные версии Windows ведут себя по-разному.

Установка пакета драйверов в Windows XP

В Windows XP кажется, что единственной разновидностью сигнатуры пакета драйверов, которая интересовала Microsoft, была сигнатура WHQL. У вас может быть пакет драйверов, который отображает красивую подсказку установки в Windows Vista и более поздних версиях, в которой указывается, кто является издателем, но установка того же пакета драйверов в Windows XP приводит к следующему предупреждению:

Установка пакета драйверов в Windows Vista и 7

Начиная с Windows Vista, Microsoft изменила свою настройку.Вместо того, чтобы предупреждать пользователей о том, прошли ли драйверы тестирование WHQL, Windows Vista и 7 предупреждают пользователя о том, подтвержден ли издатель или нет. Чтобы отображаться как подтвержденный издатель, вам необходимо предоставить CAT-файл с надлежащей подписью. Требования задокументированы в kmsigning.doc и в разделе требований к подписи выше.

Если вы правильно подпишете пакет драйверов, пользователи увидят дружеское приглашение при его установке в Windows Vista, 7 или 8:

Имя в приглашении происходит из директивы DriverPackageDisplayName INF-файла, а издатель — из проверенной подписи в CAT-файле.

Однако, если вы не подпишете свой пакет драйверов, пользователи увидят большое красное предупреждение при его установке в Windows Vista или 7:

Я думаю, что Microsoft было хорошей идеей внести это изменение. WHQL-тестирование негибкое. Если вы измените один байт вашего драйвера, вам придется повторно отправить его для повторного тестирования. Обычная подпись кода проще и дешевле: вы можете получить сертификат за пару сотен долларов в год, который позволяет подписывать столько пакетов драйверов, сколько захотите.Вероятно, это привело к тому, что больше компаний стали выпускать подписанные драйверы, поэтому вредоносная программа выделялась больше.

Установка пакета драйверов в Windows 8 и выше

Начиная с Windows 8, все пакеты драйверов должны быть подписаны. К сожалению, я не видел никаких официальных документов от Microsoft об этом изменении, хотя я спрашивал об этом в StackOverflow.

Если вы попытаетесь установить неподписанный пакет драйверов, который ранее работал в более старых версиях Windows, вы получите простое сообщение об ошибке:

Это не обязательно было плохим решением со стороны Microsoft, но это были плохие новости для множества небольших компаний, таких как наша, и частных лиц, производящих USB-устройства в небольших масштабах.В течение многих лет мы успешно распространяли неподписанные пакеты драйверов, которые отлично работали в Windows XP, Vista и 7, поскольку они полагались на модули ядра (файлы SYS), подписанные Microsoft, в частности WinUSB и usbser.sys. Начиная с Windows 8, нам приходилось выяснять процесс подписания драйверов или предлагать нашим клиентам Windows 8 выполнить сложную процедуру отключения принудительной подписи драйверов.

Если вы новичок в отрасли и хотите начать производство USB-устройств, идентификатор поставщика из USB-IF будет стоить вам 5000 долларов, а сертификат подписи кода, вероятно, будет стоить несколько сотен долларов в год.Однако ваши подписи должны продолжать работать после истечения срока действия сертификата, если вы обязательно используете временную метку при подписании.

Дружественный запрос на установку драйверов для подписанных пакетов драйверов в Windows 8 выглядит примерно так же, как в Windows Vista и 7.

Некоторые пакеты драйверов содержат код режима ядра (файлы SYS), который необходимо загрузить в ядро ​​в какой-то момент, обычно, когда к компьютеру подключается соответствующее устройство.

Начиная с 64-разрядной версии Windows Vista, модули ядра должны поставляться с правильно подписанным каталогом безопасности (CAT-файлом), иначе они не могут быть загружены в ядро. В июле 2007 года, через шесть месяцев после выпуска Windows Vista, Microsoft опубликовала два документа о новых требованиях к подписи: kmsigning.doc и KMCS_walkthrough.doc.

Если ваш драйвер использует только WinUSB или usbser.sys, все, о чем вам нужно беспокоиться, — это установить пакет драйверов, как описано в разделе «Установка пакета драйверов». Модули ядра, которые вы используете, уже подписаны Microsoft, и у вас не будет проблем с их загрузкой в ​​ядро ​​после установки пакета драйверов.

Сигнатуры для кода режима ядра обычно хранятся в каталоге безопасности (CAT-файле) для пакета драйвера, но в случае загрузочного драйвера вы должны встроить подпись в сам файл SYS, согласно kmsigning.док.

До Windows 10 1607 (Anniversary Update) вы могли использовать кросс-сертификат для подписи вашего CAT-файла и создания подписи. это убеждает Windows загрузить ваш файл SYS в ядро. Основным требованием для этой подписи было то, что цепочка доверия подписи должна возвращаться к Корневой сертификат Microsoft Code Verification или другой сертификат, которому доверяет ядро. Это очень четко задокументировано в kmsigning.док что объясняет, что ядро ​​не имеет доступа к списку доверенных корневых центров сертификации. Microsoft публикует полный список перекрестных сертификатов для подписи кода в режиме ядра.

Однако существуют дополнительные требования к подписям модулей ядра в Windows 10 1607 и более поздних версиях. См. Информацию о портале ниже.

Важно отметить, что данная сигнатура может быть достаточно хорошей для установки пакета драйвера, но не достаточно хороша для загрузки модулей ядра (файлов SYS) в ядро.Часть Windows, которая проверяет подписи для установки пакета драйверов, очевидно, отличается от той части, которая проверяет подписи для загрузки модулей ядра, и каждая из них предъявляет разные требования к подписи.

Одна важная деталь заключается в том, что подпись может быть получена из любого каталога безопасности, установленного в системе; на самом деле подпись не обязательно должна быть в каталоге безопасности для INF-файла, соответствующего устройству.Другими словами, если корпорация X создает модуль ядра и должным образом подписывает его для Windows Vista / 7, корпорация Y может создать пакет драйверов для своего собственного продукта, который использует модуль ядра, а корпорация Y не обязана предоставлять какую-либо подпись для это для работы в Windows Vista / 7. Это не особенно удивительно, если задуматься: опасность загрузки кода в ядро ​​зависит только от самого кода, а не от устройства или INF-файла, с которым он используется. Фактически, именно эта деталь позволяет нашему драйверу USB-последовательного моста CP2102 работать в Windows XP / Vista / 7/8.Подпись, которую я поставил в нашем файле каталога (plluvcp.cat), не соответствует всем требованиям для загрузки silabser.sys в ядро, но подпись, которую Silicon Laboratories поместила в свой файл каталога (slabvcp.cat), соответствует, и это все, что имеет значение.

Когда пришло время загрузить файл SYS в ядро, кажется, что Windows просканирует все файлы в хранилище каталога безопасности ( C: \ Windows \ System32 \ catroot ), чтобы увидеть, содержит ли один из них хэш для SYS. файл и адекватная подпись.Если он находит то, что ищет, загрузка завершается успешно.

Если Windows не может найти правильно подписанный каталог безопасности для вашего модуля ядра, в диалоговом окне «Свойства» для вашего устройства будет отображаться ошибка кода 52:

Я также иногда видел ошибку Code 39, возникающую в этой ситуации:

Иногда Windows может обнаружить, что модуль ядра не подписан, как только вы попытаетесь установить пакет драйвера, а не позже, когда вы подключите соответствующее устройство.Вот несколько сообщений об ошибках, которые вы можете увидеть, если это произойдет:

Цифровая подпись для модуля ядра также влияет на то, что пользователи видят в диспетчере устройств. Просто дважды щелкните устройство, использующее модуль, выберите вкладку «Сведения» и щелкните «Сведения о драйвере» . В идеале вы хотели бы, чтобы название вашей компании отображалось в этом диалоговом окне, но я не провел достаточно исследований, чтобы точно знать, каковы требования.Вот почему я поставил вопросительные знаки в столбце «Загрузка модуля ядра» в приведенной выше таблице, озаглавленной «Требования к подписи, чтобы он выглядел хорошо».

Модули ядра Windows 10 должны быть подписаны порталом

Microsoft объявила , что все новые драйверы режима ядра Windows 10 должны быть отправлены и подписаны цифровой подписью на портале панели мониторинга Windows Hardware Developer Center, который является веб-службой, предоставляемой Microsoft.

Microsoft объявила, что это правило будет применяться только в системах Windows 10, которые были недавно установлены в сборке 1607 или более поздней, с включенной безопасной загрузкой.

У меня нет личного опыта использования портала, поэтому я могу лишь повторить то, что Microsoft заявляла о том, как он работает. Согласно интервью с менеджером программы Microsoft Джеймсом Мюрреем 24 июля 2015 г. есть два разных маршрута подписано на портале: «Аппаратная совместимость» и «аттестация».

Аппаратная совместимость Маршрут — это старый маршрут, по которому ваш водитель подвергается серии тестов, разработанных от Microsoft, чтобы гарантировать его качество. Тогда Microsoft предположительно подпишет ваш драйвер должным образом для всех версий. Windows, которая вас интересует, и у вас может быть один драйвер, который работает со всеми этими версиями.

Аттестация Маршрут — это новый маршрут, по которому вашему водителю не нужно проходить никаких тестов, но получившийся драйвер работает только в Windows 10.

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

В этом сообщении о подписи водителя от Кристофа Людерса документируется его опыт покупки сертификата электромобиля, получения учетной записи на портале и прохождения маршрута аттестации.

Может быть полезна документация Microsoft для портала.Кроме того, первая презентация в этом видео от Microsoft о сертификации драйверов — это в основном повторение информации из их письменных объявлений, но в ней есть ссылка на раздел реестра, который можно использовать для отключения требования портала в целях тестирования (без собственно указав путь к ключу к сожалению).

Сертификаты SHA-2 требуют KB3033929 в Windows 7

Если ваш сертификат использует SHA-2 или имеет сертификаты SHA-2 в своей цепочке доверия, и вы используете его для подписи модулей ядра, вам следует знать о KB3033929, обновлении для Windows 7, распространяемом через Центр обновления Windows.В версиях Windows 7 без этого обновления ядро ​​будет отклонять подписи, сделанные с помощью сертификатов, использующих SHA-2, поэтому их нельзя использовать для загрузки модуля ядра.

Сертификаты SHA-2 не работают для модулей ядра Vista

Если ваш сертификат использует SHA-2 или имеет сертификаты SHA-2 в своей цепочке доверия, вы не сможете использовать его для загрузки модулей ядра в 64-разрядное ядро ​​Windows Vista. Я пытался сделать это несколько раз, но у меня никогда не получалось.В отличие от Windows 7, здесь нет обновлений, чтобы исправить это. Если вам действительно нужно создать новые драйверы режима ядра для 64-разрядной версии Windows Vista, вы можете попробовать проинструктировать своих пользователей, как отключить принудительное использование подписи драйверов.

Используйте / t для отметок времени, если Windows Vista имеет значение

Я не тестировал его, но подозреваю, что 64-разрядная версия Windows Vista не будет принимать временные метки, созданные с помощью параметра / tr , при загрузке модулей ядра, потому что именно так она ведет себя при проверке подписи в исполняемом файле или пакете драйвера.Поэтому вместо этого следует использовать / t .

Вам нужно будет выбрать эмитента сертификата и приобрести у него сертификат подписи кода. Сертификат подписи кода

от GlobalSign

Хороший вариант — сертификат подписи кода, предлагаемый Globalsign. Вам нужно будет выбрать, получить ли сертификат расширенной проверки (EV) или обычный сертификат. Сертификат EV дороже и, вероятно, доставляет больше хлопот, но он требуется Microsoft, если вы собираетесь подписывать драйверы режима ядра и хотите, чтобы эти драйверы в целом работали в Windows 10.Кроме того, сертификат EV даст вам «немедленную репутацию с Microsoft SmartScreen», уменьшая вероятность того, что пользователи увидят случайные ошибки при загрузке подписанных исполняемых файлов от вас.

Мы приобрели обычный сертификат подписи кода у GlobalSign в 2015 году и обновили его в 2016 году, и он отлично подходит для подписи наших исполняемых файлов и пакетов драйверов. Я также протестировал сертификат 2015 года, чтобы увидеть, может ли он подписывать драйверы режима ядра, и это сработало, но это было до того, как были полностью применены новые правила для портала Windows Hardware Developer Center Dashboard.Сертификат мы получили всего за 219 долларов в год. Сотрудники GlobalSign обработали наш заказ очень быстро: я смог загрузить и использовать сертификат в течение 24 часов с момента размещения заказа.

Однако ваш опыт покупки сертификата у них будет сложнее, чем у нас, из-за новых правил безопасности для подписи кода, реализованных на . В частности, вы не сможете скачать закрытый ключ и сертификат онлайн; закрытый ключ будет предоставлен вам на USB-токене (SafeNet eToken 5100), который должен быть подключен к вашему компьютеру при создании подписей.Globalsign выходит за рамки того, что на самом деле требуют новые правила. Новые правила требуют только от лица, покупающего сертификат, подтвердить, что он хранит закрытый ключ с использованием определенных процедур безопасности, а правила позволяют хранить закрытый ключ на стандартном USB-накопителе. Чтобы узнать о новых правилах, см. Документ «Минимальные требования к выпуску и управлению общедоступными сертификатами подписи кода» Рабочей группой подписи кода от .

Обязательно установите перекрестный сертификат GlobalSign R1-R3 на компьютер, который будет делать подписи. Вы можете найти этот сертификат на этой странице их веб-сайта, а также его копию здесь. Этот сертификат устанавливается в список «Промежуточные центры сертификации», который отображается в certmgr.msc. Мои эксперименты показали, что, установив там сертификат, signtool найдет его и включит в подписи, которые вы делаете.В результате любой компьютер, проверяющий подпись, будет искать корневой сертификат R1 GlobalSign вместо поиска корневого сертификата R3 GlobalSign. Сертификат R1 намного старше, поэтому он, вероятно, будет доступен на большем количестве компьютеров. Например, я обнаружил, что на компьютере с Windows 7, не подключенном к Интернету, сертификат R1 доступен, а сертификат R3 — нет. На компьютере с Windows Vista, не подключенном к Интернету, к сожалению, ни один из сертификатов не был доступен.Независимо от того, какой тип подписи вы делаете, перекрестный сертификат R1-R3 поможет распознать вашу подпись на большем количестве компьютеров.

Чтобы узнать больше о том, как проводить эти эксперименты самостоятельно и проверить эти результаты, см. Раздел тестирования.

Сертификат подписи кода

от K Software

Еще один центр сертификации, который следует рассмотреть, — это K Software, партнер Comodo.На момент написания их сертификаты были значительно дешевле, чем у GlobalSign. В отличие от GlobalSign, если вы получаете сертификат не-EV, вы можете сгенерировать свой собственный закрытый ключ и сохранить его на своем компьютере; никакого USB-оборудования не требуется. K Software предлагает специальное предложение для читателей этой статьи: просто введите «CPNDEG» в поле «Партнерский купон», чтобы получить скидку 10% от стоимости сертификата!

Я уже некоторое время пользуюсь сертификатом от K Software и никаких проблем не возникло.Я использую его только для подписи программного обеспечения и пакета драйверов, а не для подписи модулей ядра.

Сертификат подписи кода от Go Daddy

Мы использовали сертификат подписи кода SHA-1 от GoDaddy с 2012 по 2015 год, а затем перешли на GlobalSign. Сертификат GoDaddy работал для подписи исполняемых файлов и пакетов драйверов, но не работал для драйверов режима ядра (файлов SYS), потому что не было доступного перекрестного сертификата для расширения цепочки доверия обратно в корень проверки кода Microsoft.Если вы получите сертификат подписи кода SHA-2 от GoDaddy, он может быть таким же хорошим, как сертификат GlobalSign, о котором я упоминал выше, но я его не тестировал.

Обнаружение хорошего сертификата продукта

Вот несколько советов по поиску хорошего сертификата:

  • Если вам нужно подписать драйверы режима ядра и вы хотите, чтобы они в целом работали в Windows 10, обязательно получите сертификат расширенной проверки (EV), чтобы вы могли отправить свои драйверы на портал панели управления Windows Hardware Developer Center.
  • Если вам нужно подписать драйверы режима ядра, раньше было важно убедиться, что ваша цепочка доверия может вернуться к корню проверки кода Microsoft через один из перекрестных сертификатов, доступных на веб-сайте перекрестных сертификатов Microsoft для подписи кода в режиме ядра. страница. Однако это уже не важно, потому что портал панели инструментов Центра разработчиков оборудования Windows предположительно подпишет ваши драйверы подписью, которая работает во всех указанных вами версиях Windows.
  • Рекомендуется взглянуть на несколько разных компьютеров с Windows, чтобы увидеть, какие сертификаты уже установлены в списке доверенных корневых центров сертификации, который отображается в certmgr.msc. Вы также можете посмотреть сертификаты, встроенные в качестве ресурсов в C: \ Windows \ System32 \ crypt32.dll, потому что эти сертификаты могут быть автоматически установлены по запросу. К сожалению, я не нашел и не разработал хороший способ просмотра сертификатов в crypt32.dll. Ваша цель — купить сертификат, цепочка доверия которого основана на сертификате, который уже будет доверенным корневым центром сертификации (или находиться внутри crypt32.dll) на всех компьютерах ваших пользователей, чтобы вам не приходилось полагаться на Windows. Обновлять. Например, на моем компьютере с Windows 8 я вижу «Корневой центр сертификации GlobalSign» в моих доверенных корневых центрах сертификации, что является одним из признаков того, что GlobalSign — хорошая компания для покупки сертификата.
  • Убедитесь, что рассматриваемый вами центр сертификации имеет достойную политику возврата.

В этом разделе объясняется, что делать после того, как вы приобрели сертификат подписи кода, чтобы фактически использовать его. Эту информацию в основном можно найти из официальных источников, но некоторые из этих источников (например, kmsigning.doc) устарели.

Прежде всего, вы должны следовать инструкциям по установке от вашего поставщика сертификатов. Они будут включать в себя какую-то процедуру для получения закрытого ключа и сертификата, которые можно использовать на вашем компьютере.Этот процесс, вероятно, будет включать установку одного или нескольких промежуточных сертификатов на ваш компьютер, чтобы у вас была полная цепочка доверия от вашего сертификата до корневого сертификата вашего провайдера. После того, как вы выполнили эти инструкции, вам следует открыть certmgr.msc и посмотреть на свой сертификат, чтобы убедиться, что все в порядке.

Кросс-сертификат

Возможно, вам потребуется загрузить соответствующий кросс-сертификат, чтобы расширить цепочку доверия и удовлетворить все желаемые требования к подписи.Все стандартные перекрестные сертификаты, которые возвращаются к корневому каталогу проверки кода Microsoft, доступны для загрузки в Microsoft. У вашего поставщика сертификатов могут быть другие полезные кросс-сертификаты, доступные для загрузки на их веб-сайте. Чтобы использовать перекрестный сертификат, вам нужно будет включить аргумент формы / ac «path-to-your-cross-cert.ct» при вызове signtool. Однако перекрестные сертификаты больше не имеют большого значения, поскольку доступен портал панели мониторинга Windows Hardware Developer Center, который будет подписывать драйверы за вас.

Промежуточный сертификат

Может быть полезно загрузить промежуточный сертификат и установить его на компьютер для подписи. Например, как я объяснил выше, промежуточный сертификат GlobalSign R1-R3 расширяет цепочку доверия от их нового сертификата R3 (который использует SHA-2) до их более старого, лучше поддерживаемого сертификата R1. Мои эксперименты показали, что такой промежуточный сертификат автоматически включается в подписи, которые вы делаете, если он установлен на подписывающем компьютере.Если центр сертификации промежуточного сертификата соответствует корневому сертификату, который старше и лучше поддерживается, чем ваш обычный корневой сертификат, то использование промежуточного сертификата может позволить вашей подписи распознаваться на большем количестве компьютеров. Однако, если сертификат этого органа плохо поддерживается, то использование промежуточного сертификата, вероятно, может навредить вам, так что будьте осторожны.

Алгоритм дайджеста

Алгоритм дайджеста (или дайджест файла) — это хеш-функция, используемая для вашего файла перед его подписью.Вы должны выбрать, использовать ли SHA-1, SHA-256 или SHA-512. (Если вы не хотите выбирать, можно применить несколько подписей к большинству типов файлов, но это не работает для файлов MSI.)

Я рекомендую вам использовать SHA-256 или SHA-512, потому что SHA-1 в конечном итоге будет недоверчивым во всей Windows во всех контекстах. Однако пользователи Windows Vista будут страдать от ухудшения работы, если вы не будете использовать SHA-1.

Я сам не тестировал SHA-512, но Джон Даллман сообщает, что он отлично работает в Windows 7 и более поздних версиях, по крайней мере, для подписи исполняемых файлов.Он говорит, что использует SHA-512 в надежде, что его подписи прослужат дольше; как и SHA-1, SHA-256 когда-нибудь может оказаться уязвимым и вызывать недоверие.

Чтобы использовать SHA-256 в качестве алгоритма дайджеста (рекомендуется), включите аргументы / fd sha256 при вызове signtool.

Чтобы использовать SHA-512 в качестве алгоритма дайджеста, включите аргументы / fd sha512 при вызове signtool.

Чтобы использовать SHA-1 в качестве алгоритма дайджеста, включите аргументы / fd sha1 при вызове signtool.

Обратите внимание, что нет способа указать алгоритм дайджеста при запуске inf2cat; похоже, что файлы CAT всегда используют SHA-1.

Сервер отметок времени, протокол и алгоритм дайджеста

Убедитесь, что ваши подписи проставлены метки времени, чтобы они продолжали работать после истечения срока действия вашего сертификата. Ваш поставщик сертификатов должен предоставить URL-адрес сервера временных меток в своей документации, но вы, вероятно, можете использовать сервер временных меток от любого поставщика бесплатно.Вот список серверов с отметками времени, о которых я слышал:

  • http://rfc3161timestamp.globalsign.com/standard
  • http://rfc3161timestamp.globalsign.com/advanced
  • http://timestamp.globalsign.com/scripts/timstamp.dll
  • http://timestamp.globalsign.com/scripts/timestamp.dll
  • http://timestamp.globalsign.com/?signature=sha2
  • http: // sha256timestamp.ws.symantec.com/sha256/timestamp
  • http://tsa.starfieldtech.com
  • http://timestamp.entrust.net/TSS/RFC3161sha2TS
  • http://timestamp.geotrust.com/tsa
  • http://timestamp.comodoca.com

Если вы используете сертификат GlobalSign, я рекомендую использовать сервер временных меток GlobalSign. Таким образом, ваша основная подпись и подпись с меткой времени могут быть связаны с одним и тем же корневым сертификатом.Каждый корневой сертификат, на который опирается ваша подпись, является обязательством, поскольку он может отсутствовать или быть недоступным в системе пользователя. По возможности лучше полагаться только на один корневой сертификат вместо двух.

Вы должны решить, какой алгоритм использовать для отметки времени: SHA-1 или SHA-2. Я рекомендую использовать SHA-2, потому что в конечном итоге к SHA-1 в Windows не будет доверия во всех контекстах. Однако временные метки SHA-2 не работают в Windows Vista.

Если вы выберете SHA-1 для дайджеста отметки времени, у вас будет выбор: использовать протокол Authenticode или RFC3161.

Если вы решили использовать SHA-2 для дайджеста отметки времени, вы должны использовать RFC3161.

Чтобы поставить отметку времени для вашей подписи с использованием протокола RFC3161 и SHA-2 (рекомендуется), включите аргументы / tr http://timestampserver.com / td sha256 при вызове signtool.

Чтобы поставить отметку времени вашей подписи с использованием протокола RFC3161 и SHA-1, включите аргументы / tr http: // timestampserver.com / td sha1 при вызове signtool.

Чтобы поставить отметку времени вашей подписи с использованием протокола Authenticode и SHA-1, включите аргументы / t http://timestampserver.com при вызове signtool.

Некоторые серверы с метками времени не будут подчиняться вашему аргументу / td , поэтому обязательно проверьте свою подпись, чтобы убедиться, что она использует правильный алгоритм дайджеста для метки времени.

Обратите внимание, что параметр / td не только управляет алгоритмом дайджеста, используемым для метки времени, но обычно серверы меток времени также используют его для выбора правильного сертификата, цепочка доверия которого использует тот же алгоритм.

Signtool и inf2cat

Чтобы подписать что-либо, вам понадобится служебная программа Signtool.exe (Sign Tool) от Microsoft. Чтобы получить signtool.exe, я установил последнюю версию Windows SDK .

Чтобы подписать пакеты драйверов, сначала необходимо использовать другой инструмент Inf2Cat (Inf2Cat.exe) для создания файла каталога безопасности (CAT), который затем можно подписать с помощью signtool. Чтобы получить inf2cat.exe, я установил последнюю версию набора драйверов для Windows (WDK) .

Вам, вероятно, следует получить последние версии как signtool, так и inf2cat, чтобы ваши драйверы поддерживали последние версии Windows.

Ссылки на веб-сайт Microsoft для загрузки Windows SDK и Windows WDK обычно не работают, поэтому у меня их здесь нет. Я рекомендую использовать поисковую систему для поиска «Windows SDK download» и «Windows WDK download», чтобы найти последние версии.Я думаю, что сначала нужно установить SDK. WDK установится в ту же папку, что и SDK, по умолчанию это будет что-то вроде «C: \ Program Files (x86) \ Windows Kits \ 10».

Вы, вероятно, сможете понять, как использовать inf2cat и signtool из документации, но вот несколько примеров их использования.

Это пример пакетного (.bat) скрипта. Вы можете просто перетащить на него исполняемый файл или файл MSI, и он подпишет файл за вас:

  "C: \ Program Files (x86) \ Windows Kits \ 10 \ bin \ x86 \ signtool" sign / v / ac "ваш-кросс-сертификат.crt "/ n" Название вашей компании "/ fd sha1 / tr http://timestamp.globalsign.com/?signature=sha2 / td sha256% 1
пауза  

Это еще один пример пакетного сценария. Вы можете поместить его в тот же каталог, что и ваш пакет драйверов, а затем дважды щелкнуть по нему, чтобы создать каталог безопасности и подписать его.

  "C: \ Program Files (x86) \ Windows Kits \ 10 \ bin \ x86 \ inf2cat" / v / driver:% ~ dp0 / os: XP_X86, Vista_X86, Vista_X64,7_X86,7_X64,8_X86,8_X64,6_3_X86, 6_3_X64,10_X86,10_X64
"C: \ Program Files (x86) \ Windows Kits \ 10 \ bin \ x86 \ signtool" подписать / v / ac "ваш-кросс-сертификат.crt "/ n" Название вашей компании "/ tr http://timestamp.globalsign.com/?signature=sha2 / td sha256 * .cat
пауза  

Для обоих этих пакетных файлов, если вы используете перекрестный сертификат, я рекомендую просто поместить перекрестный сертификат в тот же каталог, что и пакетный файл, чтобы упростить параметр / ac .

Проверка

Вы должны использовать опцию verify в signtool.exe, чтобы проверять свои подписи, пока вы все еще изучаете процесс.Документация по параметрам signtool verify довольно запутанна, поэтому я расскажу вам, что вам нужно знать:

  • Чтобы проверить подпись с целью запуска исполняемого файла или с установкой пакета драйвера , правильный вариант — / pa . Я сделал вывод из KMCS_Walkthrough.doc.
  • Чтобы проверить подпись с целью загрузки кода режима ядра, правильный вариант — / kp .

Вот пример пакетного сценария, который проверяет подпись файла, который вы помещаете в него, используя / pa :

  "C: \ Program Files (x86) \ Windows Kits \ 10 \ bin \ x86 \ signtool" verify / v / pa% 1
пауза  

Совет: Запустите signtool verify без опции / v , чтобы увидеть, является ли временная метка подписи меткой времени Authenticode (подписанной с помощью / t ) или меткой времени RFC3161 (подписанной с помощью / tr ).Иногда бывает важно различие между этими двумя типами временных меток, и это единственный известный мне способ проверить, был ли использован правильный тип.

К сожалению, полезность signtool verify ограничена. Он гарантирует, что ваша цепочка доверия простирается до нужного места, но не расскажет вам о большинстве других требований к подписи, которые я задокументировал выше. Цепочка доверия, о которой сообщает signtool verify, вероятно, зависит от набора доверенных корневых сертификатов и промежуточных сертификатов, установленных на вашем компьютере.Чтобы действительно быть уверенным в своих подписях, вам нужно правильно протестировать их, так что продолжайте читать.

Тестирование

Совершенно очевидно, что было бы идеально протестировать подписанные драйверы / исполняемые файлы на каждой целевой версии Windows.

Что не очевидно, так это то, что при тестировании исполняемых файлов или файлов MSI вы должны запускать их сразу после загрузки из Интернета .Как я объяснил в разделе «Установка пакета драйвера», в непропатченных версиях Windows Vista есть ошибка, которая проявляется только в том случае, если файл был загружен из Интернета, и таких ошибок может быть больше. Просто поместите свои исполняемые файлы в zip-файл по секретному URL-адресу и загрузите их на тестовый компьютер. Как правило, вы узнаете, что тестируете исполняемые файлы правильно, если Windows отображает дополнительное предупреждение при попытке запустить исполняемый файл.

Вы должны протестировать загружаемый файл (например, ZIP-файл или установщик), загрузив его в Internet Explorer, чтобы убедиться, что нет проблем, когда Internet Explorer проверяет вашу подпись. По моему опыту, Internet Explorer проверяет подписи при загрузке EXE (и, вероятно, MSI тоже), но в будущих версиях он может проникать внутрь ZIP-файлов и проверять подписи исполняемых файлов внутри.

Эти тесты следует проводить на машине, на которой не установлены какие-либо промежуточные сертификаты от вашего поставщика сертификатов или поставщика временных меток.Их можно найти и удалить с помощью списка «Промежуточные центры сертификации» в certmgr.msc. Windows будет использовать эти промежуточные сертификаты, чтобы помочь построить цепочку доверия к доверенному корневому сертификату, поэтому их установка на вашем тестовом компьютере может повлиять на результаты ваших тестов. Удаление этих сертификатов заставляет Windows найти их в самом подписанном файле.

Вам также следует попытаться удалить корневые сертификаты, на которых основана ваша основная подпись и ваша временная метка.Их можно найти и удалить с помощью списка «Доверенные корневые центры сертификации» в certmgr.msc. В идеале вы могли бы удалить эти сертификаты, отключить подключение компьютера к Интернету, а затем убедиться, что ваша подпись все еще работает. Windows попытается автоматически установить корневые сертификаты, необходимые для проверки вашей подписи. По моему опыту, автоматическая установка происходит всякий раз, когда Windows показывает диалоговое окно, содержащее информацию об издателе вашего подписанного файла, а также происходит всякий раз, когда вы открываете окно «Сведения о цифровой подписи» в свойствах файла.Если подпись успешно проверена Windows, вы должны увидеть, что сертификаты, которые вы удалили, снова появятся в certmgr.msc после его обновления.

Если ваш пакет драйверов включает драйвер режима ядра, последствия изменений подписи драйвера Microsoft в Windows 10 версии 1607 заключаются в том, что вам следует протестировать драйвер в системе Windows 10, которая была недавно установлена ​​в версии 1607 или более поздней и имеет включенную безопасную загрузку. . Такая система имеет более строгие требования к подписи драйверов режима ядра, чем другие системы Windows 10.

Это раздражает, когда вы просите о помощи, а хорошие люди, пытающиеся помочь вам, в конечном итоге говорят вам неправду или полуправду. Вот некоторые из мифов, с которыми я столкнулся:

Миф

: драйверы режима ядра требуют тестирования WHQL

Скажем, девчонки в GoDaddy не очень верят пользователю в выданный ими сертификат, обещая, что драйвер всегда работает.Драйверы для 64-битной версии Windows должны быть одобрены Microsoft, а не девочками. Google «сертификаты лабораторий whql». Ханс Пассан, у которого более 300 000 репутации в StackOverflow, в ответ на мой вопрос
Индивидуальная установка [созданная нашим программным обеспечением] не содержит сертифицированных драйверов для Windows XP / 2003 / Vista / 7. Для установки нового драйвера Microsoft должна выполнить сертификацию.Несертифицированная установка не вызовет никаких других проблем, кроме предупреждающего сообщения, отображаемого Windows XP / 2003 / Vista при установке несертифицированных драйверов. Несертифицированные драйверы не могут быть установлены в Windows 7, если они не установлены с тестовым сертификатом или если не включен параметр «Игнорировать последовательную подпись», нажав F8 при запуске и выбрав соответствующий параметр. Silicon Labs, производители последовательного моста CP2102, в AN220

Это миф.Microsoft не пытается установить полный контроль над тем, что загружается в ядро. Они просто хотят упростить выяснение того, что пошло не так, когда у пользователя появляется синий экран смерти или какая-то другая проблема.

Итак, начиная с 64-разрядной версии Windows Vista, Windows требует подписи для загрузки кода режима ядра. Начиная с Windows 8, они также требуют, чтобы пакеты драйверов были подписаны. Начиная с Windows 10, драйверы режима ядра должны быть подписаны Microsoft через свой портал, но это не влечет за собой какого-либо тестирования качества драйвера.Код все еще может содержать бесконечные циклы и вирусы, но, по крайней мере, его можно отследить до источника при возникновении проблем!

См. Раздел о требованиях к подписи, чтобы получить полное объяснение того, что вам нужно сделать.

Миф: DefaultInstall не работает с подписанными драйверами

INF-файл пакета драйвера не должен содержать раздел INF DefaultInstall, если пакет драйвера должен иметь цифровую подпись. Microsoft, в документации раздела установки INF по умолчанию

Документация неверна.Я распространял подписанные драйверы с разделами DefaultInstall среди наших клиентов с ноября 2012 года, и раздел DefaultInstall не вызвал никаких проблем. Я не вижу причин, по которым должна быть проблема. Пока я разбирался в процессе подписания в 2012 году, я использовал раздел DefaultInstall почти исключительно как метод тестирования установки пакета драйверов.

Раздел DefaultInstall позволяет пользователю установить ваш INF-файл, просто щелкнув его правой кнопкой мыши и выбрав «Установить».На самом деле вам следует использовать DPInst, SetupCopyOEMInf или PnPUtil для установки драйверов, но раздел DefaultInstall легко добавить, и он может быть полезен для некоторых клиентов, поэтому он у вас должен быть.

Например, если ваш драйвер называется foo_driver.inf , вы должны добавить следующие строки:

  [Установка по умолчанию]
CopyINF = foo_driver.inf  

Вы даже можете ссылаться на несколько файлов INF в директиве CopyINF, если хотите.

Миф

: номер версии INF указывает на поддержку ОС

Создайте файл INF в каталоге пакета драйверов и отредактируйте его для Windows Vista. В частности, измените дату сборки на 01.04.2006 или выше, а версию на 6. Например: DriverVer = 04.01.2006, 6.0.1.0 Microsoft, в kmsigning.doc

Как правило, kmsigning.doc довольно хорош, но это неверная строка.

Я не знаю, правильно ли их заявление о дате, потому что я никогда не пробовал датировать один из моих драйверов до 2006 года, но они определенно ошибаются в номере версии. Я успешно распространил драйверы среди тысяч клиентов, работающих под управлением Windows XP / Vista / 7, и наши версии драйверов обычно находятся в диапазоне от 1.0.0.0 до 3.0.0.0.

Директива INF DriverVer задокументирована здесь, в MSDN.Если номер версии DriverVer каким-то образом важен, это следует задокументировать на этой странице, а не закопать на странице 11 kmsigning.doc. Фактически, версия DriverVer — это , необязательно , согласно этой странице.

Я думаю, что лучше всего начинать с номера версии 1.0.0, и всякий раз, когда вы редактируете файл по какой-либо причине, вы должны увеличивать номер версии и обновлять дату драйвера. Я рекомендую использовать семантическое управление версиями.

полуправда: Windows 7 не поддерживает SHA-2

В некоторых случаях может потребоваться подписать пакет драйвера двумя разными подписями. Например, предположим, что вы хотите, чтобы ваш драйвер работал в Windows 7 и Windows 8. Windows 8 поддерживает подписи, созданные с помощью алгоритма хеширования SHA256, а Windows 7 — нет. Для Windows 7 вам понадобится подпись, созданная с помощью алгоритма хеширования SHA1. Microsoft, из подписания драйвера для общедоступного выпуска на MSDN

Это полуправда.По моему опыту, сигнатуры SHA-2 в пакетах драйверов (то есть в файлах CAT) отлично работают в Windows Vista и Windows 7 с целью установки пакета драйверов. Однако они не работают с целью загрузки модулей ядра (файлов SYS) в ядро ​​в системах, в которых не установлено обновление KB3033929. Если вы используете SHA-2 для подписи пакета драйвера, который имеет код режима ядра, вы получите ошибку кода 52, когда вы подключите свое устройство и фактически попытаетесь использовать драйвер в системах без KB3033929.Если ваш пакет драйверов не содержит новых модулей ядра (например, вы используете WinUSB или usbser.sys), подпись SHA-2 будет работать нормально. Дополнительные сведения об этом см. В разделе о требованиях к подписи выше.

Иногда сказать клиенту полуправду может быть хуже, чем просто рассказать миф. В первый раз, когда я прочитал абзац из приведенной выше документации MSDN, я просто предположил, что это было совершенно неправильно, потому что, по моему опыту, подпись SHA-2 отлично работала для моего WinUSB и usbser.sys на основе пакетов драйверов. В этом абзаце есть доля правды, но, к сожалению, я не смог принять эту истину, потому что она была завуалирована неточностью. Имейте это в виду в следующий раз, когда вы попытаетесь написать документацию или что-то кому-то объяснить: если вы скажете что-то, что идет вразрез с их восприятием мира, они не будут учитывать то, что вы говорите.

С другой стороны, кто-то однажды сказал мне:

Подписание, пожалуй, наименее подходящая область для демонстрации творческих способностей и независимого мышления.Как раз наоборот. Постарайтесь точно следовать инструкциям. … Что бы ни писали в Stack Overflow — документация WDK говорит истину в последней инстанции (при обновлении, конечно). Павел А., в ответ на мой вопрос по MSDN

Что ж, в данном случае Павел был прав. Если бы я отключил все свое творчество и независимое мышление, я бы принял этот абзац как истину (даже если он противоречит всем имеющимся свидетельствам), и это избавило бы меня от боли позже.

Я не могу просто выключить свой мозг, но я считаю важным, чтобы мы пошли на компромисс с Павлом. Мы должны серьезно относиться к документации, и когда в ней говорится что-то, что противоречит нашему опыту, мы должны учитывать возможность того, что документация может быть правильной в какой-то другой области, которую мы еще не тестировали. Следовательно, некоторые из мифов, которые я перечислил выше, могут на самом деле быть полуправдой.

  1. Получение подписанного драйвера режима ядра для Windows 10.Кристоф Людерс. .
  2. Сертификация драйверов
  3. на клиенте и сервере Windows. Microsoft Channel 9. . Часовое видео.
  4. Минимальные требования для выпуска и управления общедоступными сертификатами подписи кода. Рабочая группа по подписанию кода. . Новые требования к защите закрытых ключей с помощью оборудования находятся в разделе 16.3, а также упоминаются в сообщении в блоге.
  5. Центры сертификации для применения новых требований Microsoft к подписи кода цифровых сертификатов.Redmond Magazine. .
  6. Панель управления Windows Hardware Dev Center. Microsoft. Документирует портал, который необходимо использовать для подписи драйверов режима ядра.
  7. Принудительное применение сертификатов SHA1 в Windows. Microsoft. Утверждает, что SHA-1 в конечном итоге не будет пользоваться доверием в Windows во всех контекстах.
  8. Драйвер Подписание изменений в Windows 10 версии 1607. Microsoft. .
  9. Проверка подписи сертификата SHA1 (SHA1SigCertCheck.ps1). Microsoft. . Скрипт для проверки, использует ли ваша подпись SHA-1 и применяется ли устаревание SHA-1.
  10. Как подписывать драйверы и исполняемые файлы Windows. Адафрут. . Подробное руководство с большим количеством скриншотов.
  11. Обновите свои сертификаты подписи кода Windows до 31 декабря 2015 г. Блог DCSoft. .
  12. Вопросы и ответы: Подписывание драйверов Windows 10. OSR задает вопросы Джеймсу Мюррею из Microsoft..
  13. Поддержка хэш-алгоритма подписи кода Windows. GlobalSign. . Хорошая диаграмма о SHA-1 и SHA-256.
  14. Authenticode в 2015 году. Эрик Лоу, бывший сотрудник Microsoft. .
  15. Изменения подписи драйверов в Windows 10. Блог о сертификации оборудования для Windows. .
  16. КБ2763674. Microsoft. Исправление ошибки SHA-2 для Vista.
  17. КБ3033929.Microsoft. SHA-2 для Windows 7.
  18. КБ2921916. Microsoft. Специальное исправление ошибки SHA-2 для Windows 7.
  19. Цифровые подписи для модулей ядра в Windows (kmsigning.doc). Microsoft. .
  20. Пошаговое руководство по подписанию кода в режиме ядра (KMCS_walkthrough.doc). Microsoft. .
  21. Участники программы корневых сертификатов Windows. Microsoft.
  22. кросс-сертификатов для подписи кода в режиме ядра.Microsoft.
  23. Signtool.exe (средство подписи). Microsoft.
  24. Inf2Cat. Microsoft.
  25. Проблемы с автоматическим обновлением корневого сертификата при проверке подписанного пакета драйвера INF. Дэвид Грейсон. .
  26. Как Windows автоматически устанавливает сертификаты в список доверенных корневых центров сертификации? Дэвид Грейсон. .
  27. Механизм цепочки сертификатов (CCE).Microsoft. Последнее обновление .
  28. Подписывание драйверов Windows 8. Технологии автоматизации PiXCL. 2013-03-09.
  29. Рекомендации Microsoft по безопасности (2880823). Microsoft. .
  30. Корейский перевод этой статьи. Хиджун Ким. .
  31. Формат переносимой исполняемой подписи Windows Authenticode. Microsoft. .
  1. : Добавьте дополнительную информацию о Windows 10 в раздел «Загрузка модуля ядра».
  2. : Добавьте K Software.
  3. : Я ошибался насчет лазейки; внесены соответствующие изменения в статью. Также добавлено то, что я знаю о новых модулях аппаратной безопасности, которые требуются по состоянию на .
  4. : Стало ясно, что SHA-1 в конечном итоге не будет доверять Windows во всех контекстах, удалены некоторые советы по использованию SHA-1.
  5. : Добавлена ​​ссылка на требования к новому аппаратному модулю безопасности (HSM) и другие изменения, начиная с . (Спасибо, Джон Даллман!)
  6. : Изменен раздел Дайджеста, чтобы рекомендовать SHA-2, поскольку это то, что мы делаем.
  7. : Добавлена ​​информация о Windows 10 build 1607.
  8. : Удалены ссылки для скачивания WDK и SDK. Добавлены ссылки на новые ресурсы от Microsoft и Adafruit. Судя по всему, тестирование WHQL теперь бесплатно, поэтому исправлены некоторые упоминания «денег» и «дорого».
  9. : Добавлена ​​действительно красивая лазейка в портале. В раздел «Как подписать» добавлено обсуждение того, как выбирать алгоритмы дайджеста.
  10. : В раздел требований к подписи добавлен «отказ от SHA-1».
  11. : Добавлены опции ОС inf2cat 6_3_X86 и 6_3_X64.
  12. : Добавлена ​​информация о новом портале подписи драйверов для Windows 10.
  13. : Серьезные изменения. Обновлен документ для SHA-2 и Windows 10. Также поменял рекомендую / т за / т. Также добавлена ​​информация о том, как работают промежуточные сертификаты и чем они могут быть полезны.
  14. : В примечание вверху добавлена ​​информация о KB3033929.
  15. : Добавлен совет от Джимми Каза о том, как избегать пробелов в именах файлов INF.
  16. : Добавлены ссылки на PnPUtil.
  17. : Вверху добавлено примечание о том, как SHA-1 уходит, поэтому некоторые части этого документа необходимо обновить.
  18. : Добавлено упоминание о KB2763674, который должен сделать исполняемые файлы SHA-2 пригодными для использования в Windows Vista.
  19. : Добавлено упоминание о Microsoft Security Advisory (2880823).
  20. : Добавлен раздел Использование / tr для указания сервера временных меток и изменен во всех примерах использование / tr.
  21. : Добавлена ​​новая информация от PiXCL о том, как использовать двойную подпись с помощью SHA1 и SHA2, в раздел Использование SHA-1 для модулей ядра до Windows 8.
  22. : Первый выпуск.

Сертификаты подписи кода для подписи драйверов Microsoft

Сертификаты подписи драйверов Microsoft

Microsoft меняет процесс подписи ваших пакетов драйверов режима ядра
Начиная с 2021 года, Microsoft будет единственным поставщиком подписей кода рабочего режима ядра. Вам нужно будет начать следовать обновленным инструкциям Microsoft, чтобы подписывать любые новые пакеты драйверов режима ядра в будущем.Чтобы узнать больше, см. Статью в нашей базе знаний — Microsoft прекращает поддержку корневых сертификатов с перекрестной подписью с возможностями подписи в режиме ядра.

Публикация драйверов для Microsoft Windows

Независимо от того, нужен ли вам сертификат для цифровой подписи драйверов для устройства plug and play или для какого-либо другого периферийного устройства для Windows 8, Windows 7 или Windows Vista для 32-разрядных или 64-разрядных операционных систем (ОС), мы поможем вам .

С помощью сертификата DigiCert Code Signing вы можете подписать драйвер, которому будет доверять любая ОС Windows, и ваши клиенты смогут избежать предупреждений о том, что их драйверы принадлежат ненадежной компании.

Начиная с Windows Vista, Microsoft выдвинула очень важное требование безопасности: доверенный центр сертификации (CA) должен подписать все драйверы, прежде чем кто-либо сможет установить их на компьютер с Windows.

Это полезно для ваших пользователей по нескольким причинам. Во-первых, ваши пользователи могут проверить, что драйвер, который они загружают и запускают на своем компьютере, принадлежит вам, источнику, которому они доверяют. Во-вторых, когда они видят, что ваша компания, Inc.подписал драйвер (т.е. опубликовал), им не придется беспокоиться о каких-либо вирусах или вредоносных программах, заражающих систему.

Если кто-то попытается изменить ваши файлы драйверов после того, как вы их выпустили и снабдили цифровой подписью, подпись в программе установки больше не действительна. Вместо подписи с изображением вашей компании, ваши клиенты получают предупреждение о том, что драйвер из неизвестного источника и ему не следует доверять.

Цифровая подпись драйверов помогает завоевать доверие клиентов, сообщает вашим клиентам, что драйвер, который они собираются загрузить, не был подделан, и помогает пользователям избегать вредоносных программ.

Получите сертификаты подписи кода всего за 474 доллара в год

купить сейчас

Характеристики сертификата подписи драйвера

При покупке сертификата для подписи кода DigiCert вы получаете следующие преимущества:

  • Возможность подписывать пакеты драйверов

    Вы получаете возможность подписывать драйверы Windows на весь срок действия сертификата подписи кода. Драйверы действительны бессрочно после их подписания.Подписанные драйверы действительны для любой версии Windows (Windows 8, Windows 7 или Windows Vista, 32- или 64-разрядная версия).

  • Получите сертификат подписи кода для платформы Authenticode

    Поскольку мы хотим максимально упростить задачу для наших клиентов, вы можете бесплатно перевыпустить свой сертификат подписи кода для Microsoft Authenticode Signing. Дополнительные сведения см. В разделе «Повторная выдача или изменение ключа сертификата подписи кода» и убедитесь, что в качестве серверной платформы выбран сертификат Authenticode.

  • Отличная служба поддержки клиентов

    Вы можете позвонить, написать по электронной почте или использовать наш LiveChat, чтобы получить помощь с любыми проблемами или вопросами. К тому же при звонке нет ни меню, ни удержаний; вы идете прямо к кому-нибудь из нашей группы технической поддержки, имеющему необходимый опыт, чтобы помочь вам.

Связанные:

12.3.Подпись и сертификация цифровых драйверов Windows

Перед распространением драйвера вы можете поставить цифровую подпись и / или заверить его, либо отправив его в программу Microsoft Windows Logo Program для сертификацию и подпись, или подписав драйвер Authenticode.

Некоторые операционные системы Windows, такие как Windows XP и ниже, не требуют установленные драйверы должны быть подписаны цифровой подписью или сертифицированы. Однако есть преимущества получения цифровой подписи или полной сертификации вашего драйвера, в том числе следующее:

  • Установка драйвера в системах, где производилась установка неподписанных драйверов заблокирован
  • Как избежать предупреждений при установке драйвера
  • Полная предустановка файлов INF [12.1] на Windows XP и выше

64-битные версии Windows Vista и выше требуют подписи кода в режиме ядра. (KMCS) программного обеспечения, загружаемого в режиме ядра.Это имеет следующие последствия для драйверов на основе WinDriver:

  • Драйверы, которые устанавливаются через INF-файл, должны распространяться вместе. с подписанным файлом каталога (подробности см. в Раздел 12.3.2).
  • Драйверы, которые не устанавливаются с помощью файла INF должен содержать встроенную подпись драйвера.
Во время разработки драйвера вы можете настроить Windows, чтобы временно разрешить установка неподписанных драйверов.

Для получения дополнительных сведений о цифровой подписи и сертификации драйверов см.

12.3.1.1. Подпись драйвера Authenticode

Механизм Microsoft Authenticode проверяет подлинность драйвера. провайдер. Это позволяет разработчикам драйверов включать информацию о себе и их код со своими программами с использованием цифровых подписей, и информирует пользователей драйвера, что издатель драйвера участвует в инфраструктура доверенных лиц.
Подпись Authenticode, однако, не гарантирует безопасность кода или функциональность.

Драйвер WinDriver \ redist \ windrvr6.sys имеет Authenticode. цифровой подписи.

12.3.1.2.WHQL Driver Certification

Программа Microsoft Windows Logo — http://www.microsoft.com/whdc/winlogo/default.mspx — закладывает процедуры подачи аппаратных и программных модулей, включая драйверы, для тестов обеспечения качества Microsoft.Прохождение тестов квалифицирует оборудование / программное обеспечение для сертификации Microsoft, которая проверяет оба драйвера аутентичность провайдера, безопасность и функциональность водителя.

Драйверы устройств необходимо подавать на сертификацию вместе с оборудованием. что они водят. Драйвер и оборудование представлены для Microsoft Windows. Тестирование лабораторий качества оборудования ( WHQL ) для получения цифровых подпись и заверение. Эта процедура проверяет как провайдер драйвера и его поведение.

Подразделение профессиональных услуг Jungo предоставляет полный набор WHQL услуга предварительной сертификации драйверов на базе Jungo. Профессиональные инженеры эффективно выполнять все необходимые тесты в тестовой лаборатории Jungo WHQL, избавляя клиентов от расходов и стресса, связанных с внутренним тестированием. Джунго готовит пакет представления WHQL, содержащий результаты тестирования, и доставляет пакет для клиента, готовый для отправки в Microsoft.
Для получения дополнительной информации см. http: // www.jungo.com/st/whql_certification.html.

Для получения подробной информации о процессе сертификации WHQL см. следующие веб-страницы Microsoft:

Примечание. Для некоторых ссылок требуется Windows Internet Explorer.

12.3.2. Подписывание драйверов и сертификация драйверов на основе WinDriver

Как указано выше [12.3.1.1], WinDriver \ redist \ windrvr6.sys Драйвер имеет Authenticode подпись.Поскольку модуль ядра WinDriver ( windrvr6.sys ) является универсальным драйвер, который может использоваться как драйвер для различных типов аппаратных устройств, он не может быть представлен как отдельный драйвер для сертификации WHQL. Тем не мение, после того, как вы использовали WinDriver для разработки драйвера Windows для выбранного вами оборудование, вы можете отправить как оборудование, так и драйвер для Microsoft WHQL сертификация, как описано ниже.

Процедуры сертификации и подписи водителя — либо через Authenticode или WHQL — требуется создание файла каталога для Водитель.Этот файл представляет собой своего рода хеш, который описывает другие файлы. Подписанный windrvr6.sys Драйвер предоставляется с соответствующим файлом каталога — WinDriver \ redist \ wd1100.cat . Этот файл назначен записи CatalogFile в windrvr6.inf файл (также есть в каталоге redist ). Этот запись используется для информирования Windows о подписи драйвера и соответствующем каталог во время установки драйвера.

Когда имя, содержимое или даже дата файлов, описанных в драйвере файл каталога изменяется, файл каталога и, следовательно, драйвер подпись, связанная с ним, становится недействительной.Поэтому, если вы выберете переименуйте драйвер windrvr6.sys [12.2] и / или связанный файл windrvr6.inf , wd1100.cat файл каталога и связанный с ним подпись водителя станет недействительной.

Кроме того, при использовании WinDriver для разработки драйвера для устройства Plug-and-Play вы обычно также создается файл INF для конкретного устройства, который регистрирует ваше устройство в работать с модулем драйвера windrvr6.sys (или переименованной версией этого Водитель).Поскольку этот файл INF создается на вашем сайте, для вашего конкретного аппаратное обеспечение, оно не упоминается в wd1100.cat файл каталога и не может быть подписано Юнго априори.

При переименовании windrvr6.sys в и / или создании файла INF для конкретного устройства для вашего устройства у вас есть два альтернативных варианта, касающихся вашего драйвера цифровая подпись:

  • Не подписывайте свой драйвер цифровой подписью. Если вы выберете эту опцию, удалите или закомментировать ссылку на wd1100.cat файл из windrvr6.inf файл (или ваша переименованная версия этого файла).
  • Отправьте свой драйвер на сертификацию WHQL или получите Authenticode подписано.
    Обратите внимание, что при переименовании WinDriver \ redist \ windrvr6.sys аннулирует цифровую подпись водителя, драйвер по-прежнему WHQL-совместимый и поэтому может быть отправлен на WHQL-тестирование.

    Чтобы поставить цифровую подпись / заверить драйвер, выполните следующие действия:

    • Создайте новый файл каталога для вашего драйвера, как описано в Microsoft Документация WHQL.Новый файл должен ссылаться на оба windrvr6.sys (или ваш переименованный драйвер) и любые используемые файлы INF в установке вашего драйвера.
    • Назначьте имя вашего нового файла каталога для CatalogFile Запись в INF-файле (-ах) вашего драйвера. (Ты сможешь либо измените запись CatalogFile в файле windrvr6.inf файл, чтобы сослаться на ваш новый файл каталога, и добавить аналогичную запись в свой файл INF для конкретного устройства; или включите как windrvr6.inf , так и свой INF-файл устройства в один INF-файл, содержащий такой Файл каталога запись).
    • Если вы хотите отправить свой драйвер на сертификацию WHQL, см. дополнительные руководящие принципы в Раздел 12.3.2.1.
    • Отправьте свой драйвер для сертификации WHQL или для Authenticode подпись.

      Обратите внимание, что многие клиенты WinDriver уже успешно подписали и сертифицировали свои драйверы на основе WinDriver.

12.3.2.1.WHQL DTM Test Notes

Как указано в документации WHQL, перед отправкой драйвера для Для тестирования вам необходимо загрузить Microsoft Driver Test Manager ( DTM ) (http: // www.microsoft.com/whdc/DevTools/WDK/DTM.mspx) и запустите соответствующие тесты для вашего оборудования / программного обеспечения. После того, как вы убедились, что вы может успешно пройти тесты DTM, создать необходимый пакет журналов и действуйте согласно документации Microsoft.

При запуске тестов DTM обратите внимание на следующее:

  • Тестовый класс DTM для драйверов на основе WinDriver должен быть Несекретный — Универсальное устройство .
  • Тест Driver Verifier применяется ко всем неподписанным драйверам, найденным на тестовая машина.Поэтому важно попытаться свести к минимуму количество неподписанные драйверы, установленные на тестовом ПК (кроме тестового драйвера — windrvr6.sys ).
  • Тест USB Selective Suspend требует, чтобы глубина тестируемого USB-устройство в дереве USB-устройств — это хотя бы один внешний концентратор и не более чем два внешних узла глубиной.
  • Стресс-тест ACPI требует, чтобы настройки ACPI в BIOS поддерживали состояние питания S3.
  • Убедитесь, что переключатель / PAE добавлен к флагам загрузки в Загрузка ПК .ini файл.
  • Перед отправкой файла на сертификацию необходимо создать новый каталог, в котором перечислены ваш драйвер и конкретные файлы INF, а также ссылка на в этот файл каталога из вашего INF-файла (ов), как описано выше [12.3.2].

Регистрация драйвера в Windows

Windows Vista x64 / Windows 7 x64

Одна из известных проблем 64-битных версий Windows Vista и новее операционных систем — это принудительная подпись драйверов.В основном 64-битная Windows Vista не загрузит драйвер без действительной подписи Authenticode (годовой сертификат стоит ~ 500 $, согласно VeriSign). Предоставляя надежный способ проверки происхождения драйвер, он создает проблемы для бесплатного программного обеспечения, работающего в режиме ядра. Лучшее обходное решение для этой проблемы используется тестовая подпись режим. Когда система загружается в режиме «тестового подписания», любой драйвер, имеющий цифровая подпись (даже не утвержденная Microsoft), может быть успешно загружена системой.

Благодаря пожертвованиям пользователей WinCDEmu теперь поставляется с действующей подписью Authenticode. Однако если вы создадите собственный версии из источников, вам может потребоваться включить режим подписи тестов, выбрав Пуск-> Все программы-> Стандартные-> Командная строка , щелкните его правой кнопкой мыши, выберите «Запуск от имени администратора» и введите следующая команда:

bcdedit -set ИСПЫТАНИЕ НА

Чтобы отключить режим подписи тестов, вам необходимо выполнить следующую команду:

bcdedit -set ИСПЫТАНИЕ ВЫКЛ.

Обратите внимание, что для этого вам необходимо перезагрузить компьютер. изменения вступят в силу.

Windows XP

Вы можете избавиться от предупреждения о неподписанном драйвере в Windows XP при установке программного обеспечения SysProgs путем импорта сертификата SysProgs.org в папка доверенных корневых сертификатов:

  1. Выберите установщик (например, установщик WinCDEmu) в В проводнике щелкните его правой кнопкой мыши и выберите «Свойства».

  2. Выберите страницу «Цифровые подписи».

  3. Выберите SysProgs.подпись org и нажмите «Подробнее».

  4. Нажать кнопку «Просмотр сертификата».

  5. Нажмите кнопку «Установить сертификат».

  6. Нажмите «Далее», выберите «Поместить все сертификаты в следующий магазин », нажмите« Обзор »и ​​выберите« Сертификация доверенного корня. Органы власти »

  7. Нажмите «Далее», затем «Готово».

Во время установки сертификата вам будет предложено подтвердить что сертификат на самом деле представляет SysProgs.орг. Для этого сравните Отпечаток SHA1 с изображением на скриншоте:

Обратите внимание, что это установит сертификат SysProgs.org как доверенный корневой сертификат, распознающий все программное обеспечение SysProgs как подписанное и проверено. Если вы хотите, чтобы только программное обеспечение, подписанное Microsoft и ее партнерами, считаться «проверенным», не устанавливайте сертификат SysProgs.org.

Почему Total Phase гарантирует, что каждый драйвер устройства подписан?

Иногда можно увидеть то, что может быть небезопасно: неподписанные драйверы

Когда вы загружаете и начинаете установку драйвера устройства в Windows, вы можете увидеть предупреждение о том, что драйвер не подписан и не должен устанавливаться.

Что такое драйвер устройства?

Драйвер устройства (также называемый драйвером) — это компьютерная программа, которая работает или управляет определенным типом устройства, подключенного к компьютеру. Он обеспечивает программный интерфейс для аппаратных устройств (таких как наши продукты Total Phase), который позволяет операционным системам и другим компьютерным программам получать доступ к аппаратным функциям без необходимости знать точные сведения об оборудовании.

В чем разница между подписанными и неподписанными драйверами? Почему это имеет значение?

Когда подписанный драйвер имеет цифровую подпись, это означает, что эта цифровая подпись связана с цифровым сертификатом, который идентифицирует «издателя» драйвера, как проверено независимым центром сертификации.Правильная цифровая подпись также показывает, что программное обеспечение драйвера находится в нормальном состоянии — оно не повреждено, не повреждено, не подвергалось манипуляциям или иным образом изменено по сравнению с исходным нормальным состоянием. Безопасно использовать.

Если драйвер был подделан или изменен каким-либо образом, подпись становится недействительной, и тогда драйвер не подписывается. Неподписанные драйверы считаются потенциально вредоносными. Для обеспечения безопасности всей вашей системы Microsoft рекомендует использовать только подписанные драйверы.Windows уведомит вас, если драйвер не подписан. Неподписанные драйверы не проходят проверку издателем или не подлежат передаче в центр сертификации и могут быть изменены с момента его подписания и выпуска для общественности.

Как узнать, подписан ли уже установленный драйвер или нет?

Неподписанные драйверы могут вызывать такие проблемы, как сбои системы и странное поведение. Проверьте свою систему на наличие неподписанных драйверов с помощью инструмента проверки подписи файлов (например, sigverif.EXE). Инструмент отобразит список всех неподписанных драйверов, установленных на вашем компьютере. Это хороший первый шаг в устранении проблем, связанных с драйверами. (Предупреждение — пожалуйста, будьте осторожны перед удалением любых видеодрайверов, которые часто не подписаны. Удаление используемого привода видеомонитора может привести к отключению вашего дисплея и его пустому виду.)

При чем здесь общая фаза?

  1. Все драйверы Total Phase подписаны. Мы прошли дополнительные этапы сертификации, чтобы убедиться, что компьютеры наших клиентов безопасны и защищены от вредоносных программ.
  2. Ваша безопасность важна для нас. Один из самых популярных способов распространения вредоносных программ — это драйверы. Если драйвер подписан, это означает, что доказано, что он не содержит вредоносного кода. Наша собственная внутренняя политика поощряет использование подписанных драйверов, и мы призываем наших клиентов делать то же самое.
  3. Установить подписанный драйвер проще, чем неподписанный. Подписанные драйверы пройдут стандартный процесс установки Windows. В то время как неподписанные драйверы приведут к появлению всплывающих окон с ошибками и задержке процесса установки.

Надеемся, эта информация была для вас полезной. Если у вас есть какие-либо вопросы о наших продуктах Total Phase, напишите нам по адресу sales@totalphase.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *