42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499
|
|
1 | |
Подписать драйвер на Windows 728.02.2017, 13:03. Показов 5928. Ответов 17
Метки нет (Все метки)
здравствуйте, необходимо подписать собранный драйвер на windows 7... вот, допустим, будет куплен ключ, далее то что делать? никак не могу найти алгоритм действий...
0
|
28.02.2017, 13:03 | |
Ответы с готовыми решениями:
17
Подписать драйвер boot режима для Windows 7 x64 Как подписать драйвер чтобы не выдавало предупреждение при запуске? Нарисовать координатные оси, подписать их, подписать деления осей Как подписать приложение для Windows? |
Ушел с форума
|
|
28.02.2017, 13:39 | 2 |
Покупаешь сертификат. Например, у Thawte или GlobalSign.
Устанавливаешь сертификат в систему. Далее нужно использовать утилиту signtool.exe (входит в WDK и Windows SDK). Драйверы под Windows 10 подписываются через портал WHDC.
1
|
42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499
|
|
28.02.2017, 13:50 [ТС] | 3 |
вот с этим непонятки: в некоторых мануалах советуют еще create sertificate... я вот не пойму: когда я куплю сертификат, то что я куплю то конкретно? сертификат это вообще файл или что? и что нужно создавать после этого...
возможно, для знающих людей вопросы плевые, но для тех, кто не в теме, темный лес честно говоря к тому же вокруг этой темы куча ссылок с непонятным предназначением, по типу вот такой: https://msdn.microsoft.com/win... re-program моя компания должна быть где-то быть зарегистрирована? это в it-отдел идти надо? Добавлено через 2 минуты или вот, допустим, ссыль Steps for Signing a Device Driver Package вот что за device driver package?) ну совсем не ясно
0
|
Ушел с форума
|
|
28.02.2017, 14:55 | 4 |
Этого не нужно.
Смотря что за сертификат. Сейчас Authenticode-сертификаты бывают двух типов: стандартные (standard) и EV (extended validation), причем первые могут быть либо SHA-1, либо SHA-2, а вторые только SHA-2, без вариантов. Если ты покупаешь стандартный сертификат, тебе пришлют файл .pfx (скорее всего). Внутри этого файла будет один или несколько сертификатов и (внимание!) твой секретный ключ. Который, разумеется, нужно будет хранить в строгом секрете. Далее нужно просто установить сертификат (двойным кликом) в хранилище "Личные" (оно же "Personal"). После этого можно утилитой signtool.exe подписывать свои программы и драйверы. Никаких дополнительных манипуляций не требуется. Для подписи драйверов нужен будет еще правильный кросс-сертификат, они доступны для свободной загрузки на сайте Microsoft. Если ты покупаешь сертификат EV, то здесь все немного сложнее. Во-первых, EV продают только организациям и юридическим лицам. Могут продать на ИП, но тут как повезет. Во-вторых, EV сертификаты устанавливаются только на USB-ключи (токены). Нужно сначала купить определенную модель USB-ключа, типа Алладин, а затем твой секретный ключ будет "прошит" туда. Точных подробностей я не помню, но могу уточнить (последний раз работал с EV больше года назад). Подписывание выполняется аналогичным образом, через signtool.exe. При этом нужно воткнуть в компьютер USB-ключ и ввести пин-код. С SHA-1 и SHA-2 тоже есть свои нюансы. Поддержка SHA-2 в ядре есть только в Windows 8 и выше. Если ты купишь сертификат с SHA-2 и подпишешь им драйвер, то для того, чтобы драйвер заработал на Windows 7, нужно туда будет поставить специальный апдейт. На Vista и Server 2008 (без R2) такой драйвер запускаться не будет и никаких вариантов поддержки нет. Сейчас некоторые конторы, если ты покупаешь у них сертификат c SHA-2, дают тебе также сертификат с SHA-1 "в подарок" (вроде у GlobalSign есть такая акция). Отдельный вопрос - подписывание драйвера под Windows 10 1607 и выше. Эта версия требует (при некоторых условиях), чтобы все драйверы были подписаны через WHDC-портал. Для регистрации на портале требуется EV-сертификат. Подробнее я описывал все это здесь: Инструкция: подписывание драйверов для Windows 10 (EV) См. ссылку выше, там все это описано. Чтобы подписывать драйверы для Windows 10, а также для Server 2016 и, в перспективе, для остальных новых версий Windows, тебе нужно зарегистрироваться на портале, заполнить там некоторые поля, подписать соглашения и т.п. Это только для Windows 10 и выше, для предыдущих версий используется старый способ с signtool.exe и кросс-сертификатами. Driver Package - это "пакет драйвера". Обычно сюда входит .inf-файл, содержащий сведения для установки, .sys-файл (т.е. сам драйвер), а также файл .cat, содержащий хэши всех файлов в driver package и подписанный сертификатом.
1
|
42 / 42 / 17
Регистрация: 25.04.2014
Сообщений: 499
|
|
28.02.2017, 15:12 [ТС] | 5 |
не, вы все-таки волшебник, счастья вам)
буду разбираться, прочел другие ваши ответы, для windows 7 походу нужен sha-1?
0
|
Ушел с форума
|
|
28.02.2017, 15:29 | 6 |
Чтобы все завелось без лишних движений - да, нужен SHA-1.
1
|
0 / 0 / 0
Регистрация: 01.03.2017
Сообщений: 7
|
|
01.03.2017, 17:24 | 7 |
Добрый вечер!
Столкнулся со странной проблемой. Есть сертификат от DigiCert, sha1, Kernel Mode, не EV. Драйвер от Cypress (CyUsb.sys, DriverVer=04/27/2012,3.4.7.000). Поменял inf, создал .cat. Подписываю .cat. Устанавливаю - драйвер ставится, но ругается на невалидную подпись: Windows cannot verify the digital signature for the drivers required for this device. A recent hardware or software change might have installed a file that is signed incorrectly or damaged, or that might be malicious software from an unknown source. (Code 52) Этот же драйвер был вполне удачно подписан сертификатом от Entrust 18 ноября 2014. Изменилось название конторы и использовать его нельзя. Более новый драйвер с поддержкой usb3 - CyUsb3.sys (DriverVer=08/19/2015,1.2.3.14) подписывается и работает на ура. Только на специфичном железе падает в BSOD и нужен старый. Второй день ломаю голову. Куда копать? Ничего в политике подписи драйверов Windows 7 SP1 x64 не менялось? PS. Проверяю на чистой Windows 7 SP1 x64, без обновлений.
0
|
Ушел с форума
|
|
01.03.2017, 17:29 | 8 |
Стоп-стоп!..
А теперь подробнее, по каждому пункту. 1. Что поменялось в .inf? 2. Как создавался .cat? 3. Как именно подписывался драйвер (командная строка signtool)?
0
|
0 / 0 / 0
Регистрация: 01.03.2017
Сообщений: 7
|
|
01.03.2017, 17:38 | 9 |
inf не изменился по сравнению с работающим драйвером, подписанным Entrust.
Строка генерации CyUsb.cat x64: Inf2Cat.exe /verbose /driver:"_PATH_" /os:XP_X64,Vista_X64,7_X64,8_X64,6_3_X64,10_X64,Server2003_X64,Server2008_X64,Ser ver2008R2_X64,Server8_X64,Server6_3_X64,Server10_X64 FileDescription : Inf2Cat FileVersion : 3.2.0.0 InternalName : Inf2Cat.exe LegalCopyright : Copyright Microsoft © 2009 OriginalFilename : Inf2Cat.exe ProductName : Portal ProductVersion : 9.0.30729 (Built from SB_HDX_DEV) Assembly Version : 3.2.0.0 Строка подписывания .cat: signtool sign /v /ac "DigiCertHighAssuranceEVRootCA.crt" /f "DigiCert_Company_sha1_CodeSigning_KernelMode.pfx" /p _PASSWORD_ /tr "http://timestamp.digicert.com" "CyUsb.cat" signtool из комплекта VS140.
0
|
Ушел с форума
|
|
01.03.2017, 17:52 | 10 |
Попробуй проверить driver package с помощью команды signtool verify
примерно так: Код
signtool.exe verify /v /kp /tw /c CAT-файл INF-файл SYS-файл
0
|
0 / 0 / 0
Регистрация: 01.03.2017
Сообщений: 7
|
|
01.03.2017, 18:13 | 11 |
Работающий драйвер со старым сертификатом:
Кликните здесь для просмотра всего текста
signtool verify /v /kp /tw /c CyUsb.cat CyUsb.inf CyUsb.sys Verifying: CyUsb.inf File is signed in catalog: CyUsb.cat Hash of file (sha1): B0D45A0094F3C127FFAA5424B1CDAC3C6D26EABC Signing Certificate Chain: Issued to: Entrust.net Certification Authority (2048) Issued by: Entrust.net Certification Authority (2048) Expires: Tue Jul 24 17:15:12 2029 SHA1 hash: 503006091D97D4F5AE39F7CBE7927D7D652D3431 Issued to: Entrust Code Signing Certification Authority - L1D Issued by: Entrust.net Certification Authority (2048) Expires: Fri Nov 12 11:51:52 2021 SHA1 hash: D0D7578B7317228E31D42EDF356A7C64F1050473 Issued to: Jeppesen Sanderson, Inc Issued by: Entrust Code Signing Certification Authority - L1D Expires: Tue Oct 17 17:01:27 2017 SHA1 hash: 3E946D73F9ADE23F768C25F57DB59AC0B9104B4E The signature is timestamped: Tue Nov 18 12:45:03 2014 Timestamp Verified by: Issued to: Entrust.net Certification Authority (2048) Issued by: Entrust.net Certification Authority (2048) Expires: Tue Jul 24 17:15:12 2029 SHA1 hash: 503006091D97D4F5AE39F7CBE7927D7D652D3431 Issued to: Entrust Code Signing Certification Authority - L1D Issued by: Entrust.net Certification Authority (2048) Expires: Fri Nov 12 11:51:52 2021 SHA1 hash: D0D7578B7317228E31D42EDF356A7C64F1050473 Issued to: Entrust Time Stamping Authority Issued by: Entrust Code Signing Certification Authority - L1D Expires: Tue Dec 16 07:53:22 2014 SHA1 hash: 084E645F2EB3955ED536F56C9EE62306AF5B8EC9 Cross Certificate Chain: Issued to: Microsoft Code Verification Root Issued by: Microsoft Code Verification Root Expires: Sat Nov 01 16:54:03 2025 SHA1 hash: 8FBE4D070EF8AB1BCCAF2A9D5CCAE7282A2C66B3 Issued to: Entrust.net Certification Authority (2048) Issued by: Microsoft Code Verification Root Expires: Thu Apr 15 23:02:17 2021 SHA1 hash: 00A3E6009EAA739B3DEEF4B506649D8A1A7AD33A Issued to: Entrust Code Signing Certification Authority - L1D Issued by: Entrust.net Certification Authority (2048) Expires: Fri Nov 12 11:51:52 2021 SHA1 hash: D0D7578B7317228E31D42EDF356A7C64F1050473 Issued to: Jeppesen Sanderson, Inc Issued by: Entrust Code Signing Certification Authority - L1D Expires: Tue Oct 17 17:01:27 2017 SHA1 hash: 3E946D73F9ADE23F768C25F57DB59AC0B9104B4E Successfully verified: CyUsb.inf Verifying: CyUsb.sys File is signed in catalog: CyUsb.cat Hash of file (sha1): 85634DF413E08184659C16F1C697052EFD19032D Signing Certificate Chain: Issued to: Entrust.net Certification Authority (2048) Issued by: Entrust.net Certification Authority (2048) Expires: Tue Jul 24 17:15:12 2029 SHA1 hash: 503006091D97D4F5AE39F7CBE7927D7D652D3431 Issued to: Entrust Code Signing Certification Authority - L1D Issued by: Entrust.net Certification Authority (2048) Expires: Fri Nov 12 11:51:52 2021 SHA1 hash: D0D7578B7317228E31D42EDF356A7C64F1050473 Issued to: Jeppesen Sanderson, Inc Issued by: Entrust Code Signing Certification Authority - L1D Expires: Tue Oct 17 17:01:27 2017 SHA1 hash: 3E946D73F9ADE23F768C25F57DB59AC0B9104B4E The signature is timestamped: Tue Nov 18 12:45:03 2014 Timestamp Verified by: Issued to: Entrust.net Certification Authority (2048) Issued by: Entrust.net Certification Authority (2048) Expires: Tue Jul 24 17:15:12 2029 SHA1 hash: 503006091D97D4F5AE39F7CBE7927D7D652D3431 Issued to: Entrust Code Signing Certification Authority - L1D Issued by: Entrust.net Certification Authority (2048) Expires: Fri Nov 12 11:51:52 2021 SHA1 hash: D0D7578B7317228E31D42EDF356A7C64F1050473 Issued to: Entrust Time Stamping Authority Issued by: Entrust Code Signing Certification Authority - L1D Expires: Tue Dec 16 07:53:22 2014 SHA1 hash: 084E645F2EB3955ED536F56C9EE62306AF5B8EC9 Cross Certificate Chain: Issued to: Microsoft Code Verification Root Issued by: Microsoft Code Verification Root Expires: Sat Nov 01 16:54:03 2025 SHA1 hash: 8FBE4D070EF8AB1BCCAF2A9D5CCAE7282A2C66B3 Issued to: Entrust.net Certification Authority (2048) Issued by: Microsoft Code Verification Root Expires: Thu Apr 15 23:02:17 2021 SHA1 hash: 00A3E6009EAA739B3DEEF4B506649D8A1A7AD33A Issued to: Entrust Code Signing Certification Authority - L1D Issued by: Entrust.net Certification Authority (2048) Expires: Fri Nov 12 11:51:52 2021 SHA1 hash: D0D7578B7317228E31D42EDF356A7C64F1050473 Issued to: Jeppesen Sanderson, Inc Issued by: Entrust Code Signing Certification Authority - L1D Expires: Tue Oct 17 17:01:27 2017 SHA1 hash: 3E946D73F9ADE23F768C25F57DB59AC0B9104B4E Successfully verified: CyUsb.sys Number of files successfully Verified: 2 Number of warnings: 0 Number of errors: 0 Неработающий драйвер с новым сертификатом: Кликните здесь для просмотра всего текста
signtool verify /v /kp /tw /c CyUsb.cat CyUsb.inf CyUsb.sys Verifying: CyUsb.inf File is signed in catalog: CyUsb.cat Hash of file (sha1): B0D45A0094F3C127FFAA5424B1CDAC3C6D26EABC Signing Certificate Chain: Issued to: DigiCert High Assurance EV Root CA Issued by: DigiCert High Assurance EV Root CA Expires: Mon Nov 10 03:00:00 2031 SHA1 hash: 5FB7EE0633E259DBAD0C4C9AE6D38F1A61C7DC25 Issued to: DigiCert High Assurance Code Signing CA-1 Issued by: DigiCert High Assurance EV Root CA Expires: Tue Feb 10 15:00:00 2026 SHA1 hash: E308F829DC77E80AF15EDD4151EA47C59399AB46 Issued to: C-Map Norway AS Issued by: DigiCert High Assurance Code Signing CA-1 Expires: Wed Jul 03 15:00:00 2019 SHA1 hash: E6AF6417EFFA4365153BAACDBAB9EDE10535D6A4 The signature is timestamped: Tue Feb 28 17:38:13 2017 Timestamp Verified by: Issued to: DigiCert Assured ID Root CA Issued by: DigiCert Assured ID Root CA Expires: Mon Nov 10 03:00:00 2031 SHA1 hash: 0563B8630D62D75ABBC8AB1E4BDFB5A899B24D43 Issued to: DigiCert Assured ID CA-1 Issued by: DigiCert Assured ID Root CA Expires: Wed Nov 10 03:00:00 2021 SHA1 hash: 19A09B5A36F4DD99727DF783C17A51231A56C117 Issued to: DigiCert Timestamp Responder Issued by: DigiCert Assured ID CA-1 Expires: Tue Oct 22 03:00:00 2024 SHA1 hash: 614D271D9102E30169822487FDE5DE00A352B01D SignTool Error: Signing Cert does not chain to a Microsoft Root Cert. SignTool Error: File not valid: CyUsb.inf Verifying: CyUsb.sys File is signed in catalog: CyUsb.cat Hash of file (sha1): 85634DF413E08184659C16F1C697052EFD19032D Signing Certificate Chain: Issued to: DigiCert High Assurance EV Root CA Issued by: DigiCert High Assurance EV Root CA Expires: Mon Nov 10 03:00:00 2031 SHA1 hash: 5FB7EE0633E259DBAD0C4C9AE6D38F1A61C7DC25 Issued to: DigiCert High Assurance Code Signing CA-1 Issued by: DigiCert High Assurance EV Root CA Expires: Tue Feb 10 15:00:00 2026 SHA1 hash: E308F829DC77E80AF15EDD4151EA47C59399AB46 Issued to: C-Map Norway AS Issued by: DigiCert High Assurance Code Signing CA-1 Expires: Wed Jul 03 15:00:00 2019 SHA1 hash: E6AF6417EFFA4365153BAACDBAB9EDE10535D6A4 The signature is timestamped: Tue Feb 28 17:38:13 2017 Timestamp Verified by: Issued to: DigiCert Assured ID Root CA Issued by: DigiCert Assured ID Root CA Expires: Mon Nov 10 03:00:00 2031 SHA1 hash: 0563B8630D62D75ABBC8AB1E4BDFB5A899B24D43 Issued to: DigiCert Assured ID CA-1 Issued by: DigiCert Assured ID Root CA Expires: Wed Nov 10 03:00:00 2021 SHA1 hash: 19A09B5A36F4DD99727DF783C17A51231A56C117 Issued to: DigiCert Timestamp Responder Issued by: DigiCert Assured ID CA-1 Expires: Tue Oct 22 03:00:00 2024 SHA1 hash: 614D271D9102E30169822487FDE5DE00A352B01D SignTool Error: Signing Cert does not chain to a Microsoft Root Cert. SignTool Error: File not valid: CyUsb.sys Number of files successfully Verified: 0 Number of warnings: 0 Number of errors: 2
0
|
Ушел с форума
|
|
01.03.2017, 18:30 | 12 |
Меня смущают две вещи. Ты пишешь, что сертификат "не EV".
Откуда тогда 'EV' в названии сертификата? Вот фрагмент валидации первого драйвера: Значит, либо кросс-сертификат не использовался, либо использовался, но не тот.
0
|
0 / 0 / 0
Регистрация: 01.03.2017
Сообщений: 7
|
|
01.03.2017, 22:05 | 13 |
Сертификат точно не EV. Ключа нет. Покупался как Code Signing.
Попробую кросс сертификат корректный вставить. И еще - большое спасибо
0
|
Ушел с форума
|
|
01.03.2017, 23:32 | 14 |
Попробуй для начала свести задачу к максимально простой форме. Это всегда помогает.
Например, сделай простейший WDM-драйвер с пустой DriverEntry, которая просто возвращает STATUS_SUCCESS (0). И подпиши его сертификатом, а затем попробуй установить в системе и запустить. Можно использовать команды sc create и net start (я всегда так делаю). Вот когда получится, можно переходить к разбору полетов с INF/CAT и установкой драйвера.
0
|
0 / 0 / 0
Регистрация: 01.03.2017
Сообщений: 7
|
|
02.03.2017, 10:10 | 15 |
Дело в том что драйвер не мой а Cypress и он работал со старым сертификатом. Поэтому допустим что он заведомо рабочий.
Заметил что старый сертификат ссылается на Microsoft Code Verification Root, а в то время как новый - самоподписанный (сам на себя). Может связаться с DigiCert и попросить разъяснений? Я не уверен что мой драйвер должен работать (и проверяться) в режиме ядра. Это драйвер usb устройства. Я про ключ проверки /kp в команде signtool verify /v /kp /tw /c и про подписывание .sys файла. Раньше я подписывал только .cat и все работало.
0
|
Ушел с форума
|
|
02.03.2017, 10:30 | 16 |
Если ты купил сертификат, он не может быть самоподписанным.
Кстати, можешь сюда загрузить подписанный этим сертификатом .cat или .sys (а лучше весь driver package)? Если это файл .sys, то должен. Этот ключ проверяет, что цифровая подпись соответствует политике Kernel Mode Code Signing на 64-битных Windows от Vista и старше. Если драйвер подписан не правильно - он загружаться не будет. И не зависимо от того, USB или что-то другое. Ты вместе с cat подписываешь еще и sys? Тут надо учитывать, что cat следует генерировать и подписывать в последнюю очередь, уже после того, как были подписаны все остальные файлы (если это делается).
1
|
0 / 0 / 0
Регистрация: 01.03.2017
Сообщений: 7
|
|
02.03.2017, 10:59 | 17 |
Во вложении 3 драйвера:
со старой подписью, работающий, с подписанным только .cat новый с подписанным .cat новый с подписанным .sys и .cat Может быть для работы нового кросс сертификат нужно обновить корневые сертификаты Windows?
0
|
0 / 0 / 0
Регистрация: 01.03.2017
Сообщений: 7
|
|
02.03.2017, 13:54 | 18 |
Разобрался. Проблема была в кросс-сертификате.
Кросс (DigiCert High Assurance EV Root CA.crt) нужно было качать с MS, а не c DigiCert. У MS он действительно кросс и ссылается на Microsoft Code Verification Root, в то время как у DigiCert они просто корневые (самоподписанные). Имя у них идентичное. Еще раз большое спасибо. PS. В моем случае достаточно подписывать только .cat
0
|
02.03.2017, 13:54 | |
02.03.2017, 13:54 | |
Помогаю со студенческими работами здесь
18
Программа / драйвер для сжатия оперативной памяти в Windows XP (Windows NT 5.X) Как установить драйвер windows 7 на windows 8.1 Драйвер на Windows 7 Драйвер видеокарты в Windows 8.1 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |