Windows » Windows Vista » Пошаговые руководства » Пошаговое руководство по подписыванию и подготовке драйверов аппаратных устройств
| В избранное | Версия для печати | Посетителей: 4668 | Просмотров: 6069 (сегодня 4) | ![]() |
Подписывание пакета драйвера устройства
Для того чтобы подписать пакет драйвера, Вам необходимо иметь цифровой сертификат, предназначенный для подписывания кода. Для получения дополнительной информации о различных типах сертификатов и о процессе их получения обратитесь к разделу «Дополнительные ресурсы» данного руководства. В этом разделе будет описан процесс создания сертификата, который Вы сможете использовать в целях тестирования.
Пошаговая схема подписывания пакета драйвера
Шаг 1. Создание цифрового сертификата для подписывания кода
На этом шаге Вы создаете сертификат, который может использоваться для подписывания пакета драйвера тестового устройства «Toaster».
Запустите консоль управления MMC и откройте оснастку Certificates для просмотра имеющихся сертификатов.
Важно
Не запускайте оснастку с помощью команды certmgr.msc, поскольку по умолчанию эта команда открывает хранилище сертификатов учетной записи текущего пользователя, а в данной процедуре требуется, чтобы сертификаты размещались в хранилище локального компьютера.
Для открытия оснастки «Certificates» консоли управления MMC выполните следующие действия:
Оснастка Certificates должна появиться в дереве консоли. |
Теперь Вы можете создать сертификат.
Примечание
Вы не можете использовать открытое ранее окно командной строки Build Environment, поскольку оно было запущено без повышенных разрешений, необходимых для работы программы MakeCert. Запуск программы MakeCert без повышенных разрешений приведет к возникновению критической ошибки отказа в доступе (код 0x5 – Access Denied).
Для создания цифрового сертификата с помощью программы MakeCert выполните следующие действия:
-r
-n "CN=MyCompany - for test use only"
Откроется диалоговое окно с информацией о сертификате.
|
Шаг 2. Добавление сертификата в хранилище доверенных корневых центров сертификации
Выполнение данного шага требуется в случае использования локально созданных сертификатов, таких как сертификаты, созданные с помощью программы MakeCert, по которым нельзя проследить прямую цепочку до сертификата доверенного корневого издателя сертификации.
По умолчанию Ваш новый сертификат имеет статус не имеющего доверия (Untrusted), поскольку Windows не может проверить его достоверность в компьютерном хранилище доверенных корневых центров сертификации. Чтобы в операционных системах Windows Vista и Windows Server «Longhorn» любой сертификат считался действительным, необходимо, чтобы по нему можно было проследить прямую цепочку до сертификата, находящегося в этом хранилище.
Выполнение данного шага не требуется в случае использования коммерческих сертификатов, выданных Вам центром сертификации, поскольку эти сертификаты уже имеют свой корневой сертификат в компьютерном хранилище доверенных корневых центров сертификации.
Примечание
Сертификаты, размещенные в хранилище доверенных корневых центров сертификации текущего пользователя, не подтверждают достоверность цифровых подписей пакетов драйверов.
Для добавления тестового сертификата в хранилище доверенных корневых ЦС выполните следующие действия:
|
Шаг 3. Добавление сертификата в компьютерное хранилище доверенных издателей
Для того чтобы Ваш новый сертификат мог выступать в качестве подтверждения достоверности цифровой подписи пакетов драйверов, его также необходимо разместить в компьютерном хранилище доверенных издателей.
Примечание
Сертификаты, размещенные в хранилище доверенных издателей текущего пользователя, не подтверждают достоверность цифровых подписей пакетов драйверов.
Для добавления тестового сертификата в хранилище доверенных издателей выполните следующие действия:
|
Шаг 4. Подписывание пакета драйвера устройства сертификатом
Если Вы используете тестовое устройство «Toaster» и его пакет драйвера – выполните следующие действия для замены существующей цифровой подписи своей собственной. Также эти действия следует выполнить, если Вы хотите внедрить в Вашей организации политику, для работы которой все драйверы устройств должны быть подписаны сертификатом Вашей организации.
Если Вы используете пакет драйвера, уже подписанный производителем, то этот пакет уже содержит рабочий файл каталога (CAT-файл), на который ссылается INF-файл. В этом случае Вы можете пропустить первые два шага и начать с шага «Подписывание CAT-файла с помощью программы SignTool».
Шаги, необходимые для подписывания драйвера устройства:
Подготовка INF-файла пакета драйвера
INF-файл управляет процессом установки пакета драйвера. Цифровая подпись пакета драйвера находится в файле каталога (файл с расширением .CAT). Убедитесь, что используемый для установки пакета драйвера INF-файл содержит ссылку на файл каталога.
В дополнение к этому, для драйвера тестового устройства «Toaster», использующегося в данном руководстве, Вы должны также изменить штамп времени и номер версии.
Совместный установщик (co-installer) – это предоставляемый производителем устройства программный код, который может быть выполнен в процессе установки устройства и который позволяет более гибко управлять программой установки. Совместный установщик драйвера тестового устройства «Toaster» отображает дополнительные программы, которые может установить пользователь. В данных сценариях совместный установщик не используется, поэтому в следующей процедуре Вы удалите его из INF-файла.
Примечание
Если Ваш пакет драйвера уже имеет цифровую подпись производителя и, следовательно, INF-файл уже ссылается на действительный файл каталога, Вы можете пропустить данную процедуру.
Для подготовки INF-файла пакета драйвера выполните следующие действия:
cd \toaster\device Notepad toastpkg.inf В программе Notepad откроется содержимое INF-файла. CatalogFile.NTx86 = tostx86.cat CatalogFile = toaster.cat DriverVer=04/01/2006,9.9.9.9 [Toaster_Device.NT.CoInstallers] |
Создание CAT-файла для пакета драйвера
Следующим Вашим действием является создание CAT-файла для пакета драйвера тестового устройства «Toaster» с помощью программы Signability. Эта программа анализирует INF-файл пакета драйвера и генерирует уникальные хеши для всех файлов, на которые ссылается INF-файл. Получатель пакета драйвера использует хеши для проверки того, что полученные файлы не были изменены с момента подписывания.
Если Ваш пакет драйвера уже имеет цифровую подпись производителя, то CAT-файл уже существует, и Вам не нужно создавать новый файл. Вы можете пропустить данную процедуру и перейти к следующему шагу «Подписывание CAT-файла с помощью программы SignTool», чтобы заменить цифровую подпись разработчика драйвера своей собственной.
Примечание
Программа Signability должна выполняться из командной строки, запущенной с повышенными разрешениями.
Для создания CAT-файла для пакета драйвера выполните следующие действия:
signability /driver:c:\toaster\device /os:256 /auto /cat /driver:c:\toaster\device Этот параметр указывает местоположение INF-файла для пакета драйвера. Вы должны указать полный путь. Символ «.» в данном случае не может использоваться для указания текущей папки в относительном пути. /os:256 Этот параметр указывает, что операционной системой является 32-разрядная версия ОС Windows Vista. Для получения полного списка поддерживаемых операционных систем и их кодов выполните команду signability /?. /auto Этот параметр указывает, что процедура должна быть выполнена автоматически, без вмешательства пользователя. /cat Этот параметр указывает, что создается файл каталога, указанный в INF-файле. Signability v2.19 (engine v01.01.0005) Закройте программу Блокнот, когда закончите просмотр отчета. start toaster.cat Откроется диалоговое окно Security Catalog, показывающее, что каталог не подписан. Поскольку CAT-файл не подписан, кнопка просмотра цифровой подписи View Signature недоступна.
|
Подписывание CAT-файла с помощью программы SignTool
Теперь, когда у Вас имеется файл каталога, Вы можете подписать его с помощью программы SignTool. Независимо от того, используете ли Вы тестовое устройство «Toaster» или любое другое устройство, выполните следующие шаги.
Важно
При подписывании пакета драйвера Вам следует всегда устанавливать штамп времени, определяющий дату создания цифровой подписи. Если сертификат будет отозван по соображениям безопасности, или если закончится срок его действия, действительными будут только те подписи, которые были созданы ранее даты отзыва или окончания срока действия сертификата. Если штамп времени не включен в цифровую подпись, Windows не сможет определить, когда был подписан пакет – до или после даты отзыва или окончания срока действия сертификата, и цифровая подпись не будет принята.
Для подписывания CAT-файла с помощью программы SignTool выполните следующие действия:
/s MyCompanyCertStore Этот параметр задает имя хранилища сертификатов, в котором программа SignTool осуществляет поиск сертификата, указанного в параметре /n. /n MyCompany
start toaster.cat |
Размещение пакета драйвера устройства в хранилище драйверов
Размещение пакета драйвера устройств в хранилище драйверов на клиентском компьютере позволяет обеспечить наиболее эффективную работу пользователя. После того, как подписанный пакет драйвера помещен в хранилище, Windows считает его надежным. До тех пор, пока для определенного устройства не заданы политики, ограничивающие его установку, пользователь может просто подключить это устройство, а операционная система автоматически установит соответствующий драйвер незаметно для пользователя.
В состав ОС Windows включена утилита PnPUtil, с помощью которой Вы можете работать с хранилищем драйверов, выполняя такие действия, как добавление, удаление и просмотр пакетов драйверов, находящихся в хранилище.
Важно
Вы можете работать с программой PnPUtil только в командной строке, запущенной с повышенными разрешениями. Программа PnPUtil не может вызывать диалоговое окно User Account Control. Если Вы попытаетесь использовать эту программу для добавления или удаления пакетов из командной строки, не запущенной от имени администратора, выполнение команд окончится неудачей.
Пошаговая схема размещения пакета драйвера устройства в хранилище драйверов
Попытка разместить подписанный, но впоследствии измененный пакет драйвера
Попытка разместить пакет драйвера, подписанный надлежащим образом
Шаг 1. Попытка разместить неподписанный пакет драйвера
Windows прерывает попытку установки неправильно подписанного пакета драйвера.
Чтобы попытаться разместить неподписанный пакет драйвера, выполните следующие действия:
ren toaster.cat toaster.nosig pnputil.exe -a toastpkg.inf Поскольку INF-файл не подписан, Вы увидите диалоговое окно Windows Security. ОС Windows не может сопоставить этот файл с каким-либо сертификатом, являющимся доверенным для компьютера. Программа PnPUtil сообщит, что размещение пакета драйвера в хранилище окончилось неудачей: Adding the driver package failed : A file could not be verified because it does not have an associated catalog signed via Authenticode(tm). Ren toaster.nosig toaster.cat |
Шаг 2. Попытка разместить подписанный, но впоследствии измененный пакет драйвера
Windows также прерывает попытку установки пакета драйвера, который был изменен с момента подписания. Поскольку цифровая подпись включает в себя отпечатки для всех файлов пакета драйвера, изменение любого из них приводит к тому, что проверка достоверности цифровой подписи оканчивается неудачей.
Чтобы попытаться разместить подписанный, но впоследствии измененный пакет драйвера, выполните следующие действия:
|
Шаг 3. Попытка разместить пакет драйвера, подписанный надлежащим образом
Чтобы попытаться разместить пакет драйвера, подписанный надлежащим образом, выполните следующие действия
Так как прикрепленная к пакету цифровая подпись является действительной, файлы пакета не были изменены, и отпечатки файлов пакета совпадают с отпечатками, содержащимися в цифровой подписи, Windows успешно поместит пакет драйвера в хранилище, не запрашивая у пользователя никаких действий. По завершении своей работы программа выводит имя, под которым был опубликован пакет драйвера, включающее в себя номер OEM, который Вы можете использовать для того, чтобы впоследствии при необходимости удалить пакет драйвера из хранилища. Запишите номер, присвоенный Вашему пакету драйверов.
Номер, присвоенный Вашему пакету драйвера, может отличаться от приведенного выше в зависимости от количества пакетов, уже установленных на компьютере. |
Вы можете просмотреть список пакетов, находящихся в хранилище драйверов, запустим программу PnPUtil с параметром -e.
Чтобы убедиться, что пакет находится в хранилище драйверов, выполните следующие действия:
Шаг 4. Проверочная установка подписанного пакета драйвера
На этом этапе пакет драйвера находится в хранилище драйверов. Пакет был помещен администратором в хранилище драйверов, операционная система выполнила проверку достоверности цифровой подписи, и, таким образом, драйвер устройства может быть установлен обычным пользователем. От пользователя требуется просто подключить устройство.
Примечание
Несмотря на то, что Windows может устанавливать драйверы, расположенные в хранилище драйверов, от имени обычного пользователя, в следующей процедуре Вы запускаете программу Enum.exe от имени администратора. Наличие повышенных разрешений необходимо не для процесса установки драйвера, а для того, чтобы можно было программно эмулировать установку аппаратного устройства. Если в следующей процедуре Вы используете реальное устройство и соответствующий драйвер, предоставленный производителем, то при подключении этого устройства Вам не требуется иметь в системе привилегии администратора.
Для выполнения проверочной установки пакета драйвера, размещенного в хранилище драйверов, выполните следующие действия:
Откроется окно командной строки.
По окончании установки драйвера устройства это устройство появится в окне диспетчера устройств.
| ||||||
Примечание
Не удаляйте устройство из системы, пока Вам не будет предложено сделать это в следующей процедуре.




