|
Установка набора Windows Driver Kit
Утилиты MakeCert, Signability и SignTool, используемые для подписывания пакетов драйверов, входят в состав набора Windows Driver Kit (WDK). Драйвер тестового устройства «Toaster», использующегося в данном руководстве, также входит в состав WDK. Если набор WDK еще не установлен на Вашем компьютере, выполните действия, описанные ниже.
Для установки набора WDK выполните следующие действия:
Войдите в систему под учетной записью DMI-Client1\TestAdmin.
Откройте локальную или сетевую папку, содержащую установочные файлы WDK.
Запустите файл Setup.exe.
На странице Welcome to the Microsoft Windows Driver Kit Setup Wizard нажмите кнопку Next.
Внимательно прочтите лицензионное соглашение на странице End-User License Agreement. Если Вы согласны с условиями лицензионного соглашения, установите переключатель в положение I accept the terms in the License Agreement и нажмите кнопку Next.
На странице Custom Setup нажмите кнопку Next.
На странице Ready to Install нажмите кнопку Install.
После завершения установки нажмите кнопку Finish, чтобы закрыть мастер. |
Наверх страницы
Настройка пакета драйвера тестового устройства «Toaster» для использования в данном руководстве
Если на Вашем компьютере установлен набор Windows Driver Kit, Вы можете выполнить описанные ниже шаги для настройки драйвера тестового устройства «Toaster».
Если же у Вас нет доступа к набору Windows Driver Kit, Вы можете использовать любое устройство, драйвер которого еще не размещен в хранилище драйверов. Пакет драйвера для такого устройства должен быть уже подписан.
Используйте следующие шаги для того, чтобы выполнить компиляцию драйверов тестового устройства и скопировать их в папку. Эти действия являются обычным способом распространения коммерческого пакета драйвера стороннего производителя.
Для настройки пакета драйвера тестового устройства «Toaster» выполните следующие действия:
Войдите в систему под учетной записью DMI-Client1\TestAdmin.
Нажмите кнопку Start и откройте меню All Programs.
Откройте папку Windows Driver Kits – WDK НомерСборки – Build Environment – Windows Vista and Longhorn и щелкните на значке Windows Vista and Windows Server Longhorn x86 Free Build Environment.
Откроется окно командной строки, настроенное для выполнения сборки драйвера устройства.
Примечание
Вы не можете использовать стандартное окно командной строки. При запуске окна командной строки Build Environment выполняются специальные настройки переменной Path и других переменных среды, необходимые для использования средств, предназначенных для сборки драйверов устройств.
Запустите программу Блокнот с указанными ниже параметрами командной строки. Вы должны находиться в папке «c:\winddk\НомерСборки».
notepad copytoastfiles.cmd |
В диалоговом окне подтверждения нажмите кнопку Yes, чтобы создать новый файл.
Скопируйте в окно программы Блокнот следующий текст:
REM ----------START COPY HERE---------- @echo off Echo Creating destination folder structure: Md c:\toaster Md c:\toaster\bus Md c:\toaster\device Md c:\toaster\device\i386 Echo Compiling the Bus device driver: Cd .\src\general\toaster\bus Build -cZ Echo Compiling the Plug-in Utility: Cd ..\exe\enum Build -cZ Echo Copying the device driver files to the destination folders: Cd ..\.. Copy .\bus\objfre_wlh_x86\i386\busenum.sys c:\toaster\bus Copy .\inf\i386\bus.inf c:\toaster\bus Copy .\toastpkg\toastcd\toastpkg.inf c:\toaster\device
Copy .\toastpkg\toastcd\i386\toaster.sys c:\toaster\device\i386 Copy .\toastpkg\toastcd\i386\tostrcls.dll c:\toaster\device\i386 Copy .\exe\enum\objfre_wlh_x86\i386\enum.exe c:\toaster Echo Toaster sample device driver is ready to use in c:\toaster Cd ..\..\.. REM ----------END COPY HERE---------- |
Примечание
Данный сценарий создает папку «Toaster» и может не сработать, если Вы не имеете разрешений на запись в корневую папку диска C:\. Если Вы вошли в систему под административной учетной записью, Вы имеете эти разрешения в установленной по умолчанию ОС Windows. Если Вы хотите создать папку в другом месте жесткого диска, измените данный сценарий соответствующим образом.
Сохраните файл с расширением .CMD и закройте программу Блокнот.
В окне командной строки Build Environment запустите только что созданный Вами CMD-файл.
copytoastfiles
Важно
Запуск CMD-файла из командной строки должен быть выполнен из папки, указанной на шаге 4. В противном случае сценарий не выполнится. |
Установка драйвера шины тестового устройства «Toaster»
Физически устройства «Toaster», которое Вы подключаете и отключаете в данном руководстве, не существует – оно эмулируется с помощью драйвера, а его поддержка обеспечивается совместной работой специального драйвера шины и соответствующей программы. Так же как и в случае с шиной USB, драйвер шины устройства «Toaster» запускает процесс установки драйвера этого устройства при его обнаружении. Подключение устройства «Toaster» эмулируется программой Enum.exe, включенной в состав его пакета драйвера. Для того чтобы Вы могли эмулировать подключение и удаление устройства с помощью программы Enum.exe, необходимо установить драйвер шины устройства «Toaster».
Для установки драйвера шины устройства «Toaster» выполните следующие действия:
В окне командной строки Build Environment наберите следующую команду:
В открывшемся диспетчере устройств щелкните правой кнопкой мыши на названии Вашего компьютера и в контекстном меню выберите пункт Add legacy hardware.
На странице Welcome to the Add Hardware Wizard нажмите кнопку Next.
На странице The wizard can help you install other hardware установите переключатель в положение Install the hardware that I manually select from a list (Advanced) и нажмите кнопку Next.
В списке типов устройств выберите категорию System devices и нажмите кнопку Next.
На странице Select the device driver you want to install for this hardware нажмите кнопку Have Disk.
В текстовом поле введите путь c:\toaster\bus и нажмите кнопку OK.
В диалоговом окне Select the device driver you want to install for this hardware выберите устройство Toaster Bus Enumerator и нажмите кнопку Next.
На странице The wizard is ready to install your hardware нажмите кнопку Next.
Поскольку драйвер устройства не имеет цифровой подписи, появится диалоговое окно Windows Security. Щелкните Install для начала процесса установки драйвера.
По завершении установки нажмите кнопку Finish на странице Completing the Add Hardware Wizard.
В диспетчере устройств раскройте узел System Devices.
Убедитесь, что устройство Toaster Bus Enumerator присутствует в списке системных устройств и закройте диспетчер устройств.
Закройте окно командной строки Build Environment. |
Подписывание пакета драйвера устройства
Для того чтобы подписать пакет драйвера, Вам необходимо иметь цифровой сертификат, предназначенный для подписывания кода. Для получения дополнительной информации о различных типах сертификатов и о процессе их получения обратитесь к разделу «Дополнительные ресурсы» данного руководства. В этом разделе будет описан процесс создания сертификата, который Вы сможете использовать в целях тестирования.
Пошаговая схема подписывания пакета драйвера
Создание цифрового сертификата для подписывания кода
Добавление сертификата в хранилище доверенных корневых центров сертификации
Добавление сертификата в хранилище доверенных издателей
Подписывание пакета драйвера устройства сертификатом
Шаг 1. Создание цифрового сертификата для подписывания кода
На этом шаге Вы создаете сертификат, который может использоваться для подписывания пакета драйвера тестового устройства «Toaster».
Запустите консоль управления MMC и откройте оснастку Certificates для просмотра имеющихся сертификатов.
Важно
Не запускайте оснастку с помощью команды certmgr.msc, поскольку по умолчанию эта команда открывает хранилище сертификатов учетной записи текущего пользователя, а в данной процедуре требуется, чтобы сертификаты размещались в хранилище локального компьютера.
Для открытия оснастки «Certificates» консоли управления MMC выполните следующие действия:
Нажмите кнопку Start, выберите в меню команду Run и в открывшемся окне введите: mmc
В меню File окна Console Root выберите команду Add/Remove Snap-in.
В окне Add or Remove Snap-ins выберите оснастку Certificates и нажмите кнопку Add.
В диалоговом окне Certificates snap-in установите переключатель в положение Computer Accountи нажмите кнопку Next.
В диалоговом окне Select Computer установите переключатель в положение Local computer: (the computer this console is running on) и нажмите кнопку Finish.
Нажмите кнопку OK, чтобы закрыть окно Add or Remove Snap-ins.
Оснастка Certificates должна появиться в дереве консоли. |
Теперь Вы можете создать сертификат.
Примечание
Вы не можете использовать открытое ранее окно командной строки Build Environment, поскольку оно было запущено без повышенных разрешений, необходимых для работы программы MakeCert. Запуск программы MakeCert без повышенных разрешений приведет к возникновению критической ошибки отказа в доступе (код 0x5 – Access Denied).
Для создания цифрового сертификата с помощью программы MakeCert выполните следующие действия:
Запустите окно командной строки Build Environment с повышенными разрешениями. Для этого в меню Start щелкните правой кнопкой мыши на значке Build Environment и в контекстном меню выберите команду Run as administrator.
В командной строке Build Environment наберите следующую команду одной строкой (в данном примере эта команда разделена на несколько строк для удобства чтения):
makecert -r -n "CN=MyCompany - for test use only" -ss MyCompanyCertStore
-sr LocalMachine |
-r
Этот параметр указывает, что сертификат не будет подписан центром сертификации, а будет являться «самоподписанным». Такой сертификат также называется корневым. |
-n "CN=MyCompany - for test use only"
Этот параметр задает имя нового сертификата. Рекомендуется использовать имена, позволяющие легко определить сертификат и его назначение.
-ss MyCompanyCertStore
Этот параметр задает имя хранилища, куда будет помещен новый сертификат. |
-sr LocalMachine
Этот параметр указывает, что создаваемое с помощью параметра -ss хранилище является хранилищем локального компьютера, а не хранилищем учетной записи текущего пользователя. |
Когда создание сертификата и хранилища сертификата будет завершено, в командной строке Вы увидите надпись «Succeeded». |
Убедитесь, что Ваш новый сертификат был создан правильно. В открытой ранее оснастке Certificates консоли управления MMC раскройте узел Certificates (Local Computer) – MyCompanyCertStore – Certificates.
В правой панели дважды щелкните на сертификате MyCompany - for test use only.
Откроется диалоговое окно с информацией о сертификате.
Нажмите кнопку OK, чтобы закрыть диалоговое окно Certificate. |
Шаг 2. Добавление сертификата в хранилище доверенных корневых центров сертификации
Выполнение данного шага требуется в случае использования локально созданных сертификатов, таких как сертификаты, созданные с помощью программы MakeCert, по которым нельзя проследить прямую цепочку до сертификата доверенного корневого издателя сертификации.
По умолчанию Ваш новый сертификат имеет статус не имеющего доверия (Untrusted), поскольку Windows не может проверить его достоверность в компьютерном хранилище доверенных корневых центров сертификации. Чтобы в операционных системах Windows Vista и Windows Server «Longhorn» любой сертификат считался действительным, необходимо, чтобы по нему можно было проследить прямую цепочку до сертификата, находящегося в этом хранилище.
Выполнение данного шага не требуется в случае использования коммерческих сертификатов, выданных Вам центром сертификации, поскольку эти сертификаты уже имеют свой корневой сертификат в компьютерном хранилище доверенных корневых центров сертификации.
Примечание
Сертификаты, размещенные в хранилище доверенных корневых центров сертификации текущего пользователя, не подтверждают достоверность цифровых подписей пакетов драйверов.
Для добавления тестового сертификата в хранилище доверенных корневых ЦС выполните следующие действия:
В оснастке Certificates консоли управления MMC щелкните правой кнопкой мыши на сертификате MyCompany - for test use only и в контекстном меню выберите команду Copy.
Щелкните правой кнопкой мыши на хранилище Trusted Root Certification Authorities и в контекстном меню выберите команду Paste.
Раскройте узел Trusted Root Certification Authorities – Certificates и в правой панели дважды щелкните на сертификате MyCompany - for test use only.
Убедитесь, что сообщение «Untrusted» больше не выводится, и нажмите кнопку OK, чтобы закрыть сертификат. |
Шаг 3. Добавление сертификата в компьютерное хранилище доверенных издателей
Для того чтобы Ваш новый сертификат мог выступать в качестве подтверждения достоверности цифровой подписи пакетов драйверов, его также необходимо разместить в компьютерном хранилище доверенных издателей.
Примечание
Сертификаты, размещенные в хранилище доверенных издателей текущего пользователя, не подтверждают достоверность цифровых подписей пакетов драйверов.
Для добавления тестового сертификата в хранилище доверенных издателей выполните следующие действия:
В оснастке Certificates консоли управления MMC щелкните правой кнопкой мыши на сертификате MyCompany - for test use only и в контекстном меню выберите команду Copy.
Щелкните правой кнопкой мыши на хранилище Trusted Publishers и в контекстном меню выберите команду Paste.
Раскройте узел Trusted Publishers – Certificates и убедитесь, что копия Вашего сертификата находится в хранилище.
Нажмите кнопку OK, чтобы закрыть сертификат. |
Шаг 4. Подписывание пакета драйвера устройства сертификатом
Если Вы используете тестовое устройство «Toaster» и его пакет драйвера – выполните следующие действия для замены существующей цифровой подписи своей собственной. Также эти действия следует выполнить, если Вы хотите внедрить в Вашей организации политику, для работы которой все драйверы устройств должны быть подписаны сертификатом Вашей организации.
Если Вы используете пакет драйвера, уже подписанный производителем, то этот пакет уже содержит рабочий файл каталога (CAT-файл), на который ссылается INF-файл. В этом случае Вы можете пропустить первые два шага и начать с шага «Подписывание CAT-файла с помощью программы SignTool».
Шаги, необходимые для подписывания драйвера устройства:
Подготовка INF-файла пакета драйвера
Создание CAT-файла для пакета драйвера
Подписывание CAT-файла с помощью программы SignTool
Подготовка INF-файла пакета драйвера
INF-файл управляет процессом установки пакета драйвера. Цифровая подпись пакета драйвера находится в файле каталога (файл с расширением .CAT). Убедитесь, что используемый для установки пакета драйвера INF-файл содержит ссылку на файл каталога.
В дополнение к этому, для драйвера тестового устройства «Toaster», использующегося в данном руководстве, Вы должны также изменить штамп времени и номер версии.
Совместный установщик (co-installer) – это предоставляемый производителем устройства программный код, который может быть выполнен в процессе установки устройства и который позволяет более гибко управлять программой установки. Совместный установщик драйвера тестового устройства «Toaster» отображает дополнительные программы, которые может установить пользователь. В данных сценариях совместный установщик не используется, поэтому в следующей процедуре Вы удалите его из INF-файла.
Примечание
Если Ваш пакет драйвера уже имеет цифровую подпись производителя и, следовательно, INF-файл уже ссылается на действительный файл каталога, Вы можете пропустить данную процедуру.
Для подготовки INF-файла пакета драйвера выполните следующие действия:
В окне командной строки Build Environment, запущенной с повышенными разрешениями, перейдите в папку, содержащую пакет драйвера. Для этого наберите следующую команду: cd \toaster\device
Наберите следующую команду: Notepad toastpkg.inf
В программе Notepad откроется содержимое INF-файла.
Найдите раздел [Version]. Исходный файл содержит следующие строки: CatalogFile.NTx86 = tostx86.cat
CatalogFile.NTIA64 = tostia64.cat
CatalogFile.NTAMD64 = tstamd64.cat
Удалите эти три строки и замените их следующий строкой: CatalogFile = toaster.cat
В разделе [Version] найдите строку, начинающуюся с DriverVer=. Замените дату и номер версии таким образом, чтобы получилась следующая строка: DriverVer=04/01/2006,9.9.9.9
В разделе [Toaster_Device.NT.CoInstallers] найдите и удалите следующие три строки: [Toaster_Device.NT.CoInstallers]
AddReg=CoInstaller_AddReg
CopyFiles=CoInstaller_CopyFiles
Сохраните изменения и закройте программу Блокнот. |
Создание CAT-файла для пакета драйвера
Следующим Вашим действием является создание CAT-файла для пакета драйвера тестового устройства «Toaster» с помощью программы Signability. Эта программа анализирует INF-файл пакета драйвера и генерирует уникальные хеши для всех файлов, на которые ссылается INF-файл. Получатель пакета драйвера использует хеши для проверки того, что полученные файлы не были изменены с момента подписывания.
Если Ваш пакет драйвера уже имеет цифровую подпись производителя, то CAT-файл уже существует, и Вам не нужно создавать новый файл. Вы можете пропустить данную процедуру и перейти к следующему шагу «Подписывание CAT-файла с помощью программы SignTool», чтобы заменить цифровую подпись разработчика драйвера своей собственной.
Примечание
Программа Signability должна выполняться из командной строки, запущенной с повышенными разрешениями.
Для создания CAT-файла для пакета драйвера выполните следующие действия:
В окне командной строки Build Environment, запущенном с повышенными разрешениями, наберите следующую команду: signability /driver:c:\toaster\device /os:256 /auto /cat
/driver:c:\toaster\device
Этот параметр указывает местоположение INF-файла для пакета драйвера. Вы должны указать полный путь. Символ «.» в данном случае не может использоваться для указания текущей папки в относительном пути.
/os:256
Этот параметр указывает, что операционной системой является 32-разрядная версия ОС Windows Vista. Для получения полного списка поддерживаемых операционных систем и их кодов выполните команду signability /?.
/auto
Этот параметр указывает, что процедура должна быть выполнена автоматически, без вмешательства пользователя.
/cat
Этот параметр указывает, что создается файл каталога, указанный в INF-файле.
Просмотрите информацию, выводимую программой Signability. Обратите внимание на то, что для каждого файла выводится предупреждение о том, что CAT-файл не будет являться доверенным до тех пор, пока он не будет подписан Вами. Signability v2.19 (engine v01.01.0005)
================================================
Test Results for c:\toaster\device
Testing versus the following operating systems:
Windows Vista (32-bit)
Final result: Test passed with warnings. (Details below.)
Warnings:
WARN: \toastpkg.inf is not represented by a signed catalog file.
WARN: \i386\toaster.sys is not represented by a signed catalog file.
WARN: \i386\tostrcls.dll is not represented by a signed catalog file.
Catalog files successfully generated.
Закройте программу Блокнот, когда закончите просмотр отчета.
Просмотрите созданный CAT-файл, который находится в папке «c:\toaster\driver». Для этого в командной строке наберите следующую команду:
start toaster.cat
Откроется диалоговое окно Security Catalog, показывающее, что каталог не подписан. Поскольку CAT-файл не подписан, кнопка просмотра цифровой подписи View Signature недоступна.
Перейдите на вкладку Security Catalog. В разделе Catalog entries содержатся три записи: для INF-файла, для SYS-файла и для DLL-файла, входящих в состав пакета драйвера. Щелкните мышью на каждой записи и обратите внимание на то, что в разделе Entry Details для каждого файла указан отпечаток (хеш), который может использоваться для проверки целостности файла.
Нажмите кнопку OK, чтобы закрыть диалоговое окно Security Catalog. |
Подписывание CAT-файла с помощью программы SignTool
Теперь, когда у Вас имеется файл каталога, Вы можете подписать его с помощью программы SignTool. Независимо от того, используете ли Вы тестовое устройство «Toaster» или любое другое устройство, выполните следующие шаги.
Важно
При подписывании пакета драйвера Вам следует всегда устанавливать штамп времени, определяющий дату создания цифровой подписи. Если сертификат будет отозван по соображениям безопасности, или если закончится срок его действия, действительными будут только те подписи, которые были созданы ранее даты отзыва или окончания срока действия сертификата. Если штамп времени не включен в цифровую подпись, Windows не сможет определить, когда был подписан пакет – до или после даты отзыва или окончания срока действия сертификата, и цифровая подпись не будет принята.
Для подписывания CAT-файла с помощью программы SignTool выполните следующие действия:
В окне командной строки Build Environment, запущенном с повышенными разрешениями, наберите следующую команду одной строкой (в данном примере эта команда разделена на несколько строк для удобства чтения):
SignTool sign /s MyCompanyCertStore /n MyCompany /t http://timestamp.verisign.com/scripts/timestamp.dll
toaster.cat |
/s MyCompanyCertStore
Этот параметр задает имя хранилища сертификатов, в котором программа SignTool осуществляет поиск сертификата, указанного в параметре /n.
/n MyCompany
Этот параметр задает имя сертификата, который используется для подписывания пакета драйвера. Вы должны указать достаточно длинный фрагмент имени сертификата, чтобы программа SignTool смогла отличить его от других сертификатов, расположенных в хранилище. Если имя сертификата содержит пробелы, Вы должны заключить его в двойные кавычки.
/t path to time stamping service
Этот параметр задает путь к службе штампа времени доверенного центра сертификации. Если Ваш сертификат был заказан у коммерческого поставщика, Вам должны были сообщить соответствующий путь к службе.
toaster.cat
Этот параметр задает имя подписываемого CAT-файла и путь к нему.
По завершении работы программы Signtool Вы должны увидеть следующее сообщение:
Successfully signed and timestamped: toaster.cat | | |
Для просмотра и проверки подписанного CAT-файла наберите в командной строке следующую команду: start toaster.cat
Убедитесь, что в верхней части страницы общих свойств диалогового окна Security Catalog отображается информация о том, что каталог имеет статус доверенного (Trusted), а кнопка View Signature доступна.
Нажмите кнопку View Signature и убедитесь в правильности данных цифровой подписи, которую Вы добавили к пакету драйвера. Никакие другие элементы CAT-файла не были изменены. |
Наверх страницы
Размещение пакета драйвера устройства в хранилище драйверов
Размещение пакета драйвера устройств в хранилище драйверов на клиентском компьютере позволяет обеспечить наиболее эффективную работу пользователя. После того, как подписанный пакет драйвера помещен в хранилище, Windows считает его надежным. До тех пор, пока для определенного устройства не заданы политики, ограничивающие его установку, пользователь может просто подключить это устройство, а операционная система автоматически установит соответствующий драйвер незаметно для пользователя.
В состав ОС Windows включена утилита PnPUtil, с помощью которой Вы можете работать с хранилищем драйверов, выполняя такие действия, как добавление, удаление и просмотр пакетов драйверов, находящихся в хранилище.
Важно
Вы можете работать с программой PnPUtil только в командной строке, запущенной с повышенными разрешениями. Программа PnPUtil не может вызывать диалоговое окно User Account Control. Если Вы попытаетесь использовать эту программу для добавления или удаления пакетов из командной строки, не запущенной от имени администратора, выполнение команд окончится неудачей.
Продолжение статьи >>>>
|
|