Есть купленный сертификат (продленный, ранее им подписывали драйверы) и собственно пытаюсь подписать драйвер для Win7x64.
Сам никогда не подписывал и поэтому начал с прочтения следующих материалов:
В результате все подписывается и проходит успешно верификацию. Смотрю свойства драйвера -> Цефровые подписи — подпись есть.
Далее пытаюсь установить на Win7x64 утилиткой InstDriver. Все утанавливается, но через некоторое время всплывает окно, что типа что-то неподписанное тут установилось и драйвер не запускается естественно. В EventViewer'e вижу сообщение:
Имя журнала: Microsoft-Windows-CodeIntegrity/Operational
Источник: Microsoft-Windows-CodeIntegrity
Дата: 13.12.2014 13:17:45
Код события: 3004
Категория задачи: (1)
Уровень: Ошибка
Описание: Windows is unable to verify the image integrity of the file \Device\HarddiskVolume2\drv\drv.sys because file hash could not be found on the system. 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.
Также я не нашел на сайте MS соответствующий моему Root-сертификату кросс-сертификат по Thumbprint.
Подскажите, что может быть не так?
Буду крайне благодарен...
Здравствуйте, -prus-, Вы писали:
P>... P>Подскажите, что может быть не так?
По описанию похоже на то, что используется неправильный кросс-сертификат.
Хотя почему тогда signtool verify /kp молчит ?..
Посмотри в свойствах обоих сертификатов, — корневого (именно корневого!) и
кросс-сертификата, — их поля subject identifier, насколько я помню, должны совпадать.
Здравствуйте, okman, Вы писали:
O>Посмотри в свойствах обоих сертификатов, — корневого (именно корневого!) и O>кросс-сертификата, — их поля subject identifier, насколько я помню, должны совпадать.
У меня во такое дерево:
VerySign -> VeriSign Class 3 Code Signing 2010 CA -> Тут купленный сертификат.
У VerySign и VeriSign Class 3 Code Signing 2010 CA разные "Идентификаторы ключа субъекта". Это если я то посмотрел
Здравствуйте, -prus-, Вы писали:
P>VerySign -> VeriSign Class 3 Code Signing 2010 CA -> Тут купленный сертификат. P>У VerySign и VeriSign Class 3 Code Signing 2010 CA разные "Идентификаторы ключа субъекта". Это если я то посмотрел
Напиши, какой у тебя "идентификатор ключа субъекта" корневого сертификата.
Здравствуйте, okman, Вы писали:
O>Попробуй вот этот кросс-сертификат: O>VeriSign Class 3 Public Primary Certification Authority – G5 O>http://go.microsoft.com/fwlink/?LinkId=321787
Тоже самое, ошибка и не запускается . А сам кросс импортировать нужно куда или достаточно просто в параметрах SignTool его указывать?
Здравствуйте, -prus-, Вы писали:
P>Здравствуйте, okman, Вы писали:
O>>Попробуй вот этот кросс-сертификат: O>>VeriSign Class 3 Public Primary Certification Authority – G5 O>>http://go.microsoft.com/fwlink/?LinkId=321787
P>Тоже самое, ошибка и не запускается .
А сам кросс импортировать нужно куда или достаточно просто в параметрах SignTool его указывать?
Достаточно указать его через опцию /ac.
Я подписываю так, например:
Да, так и делаю... Не работает пока
У меня система, на которой подписываю, win7x64 и ей уже где-то 3 года без перестановки. Товарищ предложил на чистой системе свежей все тоже самое попробовать. Это имеет какой-то смысл и обоснование?
Здравствуйте, -prus-, Вы писали:
P>Да, так и делаю... Не работает пока P>У меня система, на которой подписываю, win7x64 и ей уже где-то 3 года без перестановки. Товарищ предложил на чистой системе свежей все тоже самое попробовать. Это имеет какой-то смысл и обоснование?
Unknown publisher error occurs after signing files with a Code Signing Certificate for Microsoft Authenticode. Error occurs during download process on some devices/client machines
Cause
The Code signing certification path was updated on October 10th, 2010 to include two intermediate CA's.
This creates two possible certification paths — one terminating at the G5 Root and the other terminating at the G1.3/G1.5 Root (depending on which is installed on the client machine).
The Unknown publisher error can/will occur if the signature on the application only includes the End Entity certificate>G3 Intermediate CA.
A signature block that only contains End Entity certificate>G3 Intermediate CA requires the validating device to have the G5 root installed.
Not all client machines or devices have the G5 Root certificate installed.
Resolution
For backwards compatibility when validating a signed file the developer that is signing the code must include both intermediate CA's within the signature block. To ensure that a proper signature is applied to the signed code do the following:
Install both Code Signing Intermediates CA's on the machine used to sign the code — Click HERE to download the code signing CA's
Disable the G5 Root certificate from the signing machine.
To disable the G5 Root do the following:
Locate and Disable the VeriSign Class 3 Public Primary Certification Authority — G5 Root CA certificate
Create a Certificate Snap-In in Microsoft Management Console (MMC). Please see the following solution for information on this: SO6127
With the MMC and the Certificates snap-in open, expand the Trusted Root Certification Authorities folder on the left and select the Certificates sub-folder.
Locate the following certificate:
Issued to: VeriSign Class 3 Public Primary Certification Authority — G5
Issued by: VeriSign Class 3 Public Primary Certification Authority — G5
Expiration Date: 7/16/2036
Serial Number: 18 da d1 9e 26 7d e8 bb 4a 21 58 cd cc 6b 3b 4a
If this certificate is present, it must be disabled.
Right click the certificate
Select Properties
In the Certificate purposes section, select Disable all purposes for this certificate
Click the OK button
Close the MMC — there is no need to save console settings
Import the two intermediate certificates previously downloaded:
Issued to: VeriSign Class 3 Code Signing 2010 CA
Issued by: VeriSign Class 3 Public Primary Certification Authority — G5
Valid from: 2/7/2010 to 2/7/2020
Serial Number: 52 00 e5 aa 25 56 fc 1a 86 ed 96 c9 d4 4b 33 c7
and
Issued to: VeriSign Class 3 Public Primary Certification Authority — G5
Issued by: Class 3 Public Primary Certification Authority
Valid from: 11/7/2006 to 11/7/2021
Serial Number: 25 0c e8 e0 30 61 2e 9f 2b 89 f7 05 4d 7c f8 fd
The Code Signing Certificate for Microsoft Authenticode now has a complete chain of trust. Please re-sign your files.
Note: If you reference a PFX file to sign your files, please the following solution to generate a new PFX file: SO9777
Я так понял, у них там два сертификата G5 — один до 2021 года, второй до 2036, и при подписи
включается "не тот".
Отключил сертификат, который до 2036 года как описано. Импорторовал промежуточные сертификаты. Теперь дерево выглядит так:
VeriSign Class 3 Public Primary CA -> VeriSign Class 3 Public Primary Certification Authority — G5 -> VeriSign Class 3 Code Signing 2010 CA -> Тут купленереподписалный сертификат.
Подписал снова и все тоже самое
Здравствуйте, -prus-, Вы писали:
P>Windows is unable to verify the image integrity of the file \Device\HarddiskVolume2\drv\drv.sys because file hash could not be found on the system. 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.
Недавно вышло кривое обновление от Microsoft — KB3004394, которое обновляет корневые сертификаты, но в процессе что-то сильно ломает (детально не разбирался). Сейчас оно уже отозвано, но, может, успело установиться на эту машину и приводит к таким вот эффектам?
Здравствуйте, CaptainFlint, Вы писали:
CF>Недавно вышло кривое обновление от Microsoft — KB3004394, которое обновляет корневые сертификаты, но в процессе что-то сильно ломает (детально не разбирался). Сейчас оно уже отозвано, но, может, успело установиться на эту машину и приводит к таким вот эффектам?
Сейчас установлю на виртуалку чистую Win7x64, попробую там подписать... Отпишу по результатам...
Здравствуйте, -prus-, Вы писали:
P>Есть купленный сертификат (продленный, ранее им подписывали драйверы) и собственно пытаюсь подписать драйвер для Win7x64. P>Далее пытаюсь установить на Win7x64 утилиткой InstDriver. Все утанавливается, но через некоторое время всплывает окно, что типа что-то неподписанное тут установилось и драйвер не запускается естественно.
Какой алгоритм подписи (signature hash algorithm) указан в сертификате? Verisign сейчас позволяет выпускать сертификаты с sha2, а на Windows 7 этот алгоритм в ядре ОС не поддерживается. Поэтому подпись выглядит действительной, проходит все проверки, а при попытке старта драйвера — ядро отказывается его загружать.
Если дело в этом, необходимо перевыпустить сертификат с sha1.
Здравствуйте, Ivan, Вы писали:
I>Какой алгоритм подписи (signature hash algorithm) указан в сертификате? Verisign сейчас позволяет выпускать сертификаты с sha2, а на Windows 7 этот алгоритм в ядре ОС не поддерживается. Поэтому подпись выглядит действительной, проходит все проверки, а при попытке старта драйвера — ядро отказывается его загружать. I>Если дело в этом, необходимо перевыпустить сертификат с sha1.
I>Есть патч для Windows 7 для поддержки sha2, но от сейчас отозван: https://technet.microsoft.com/en-us/library/security/2949927 I>см. также: https://support.globalsign.com/customer/portal/articles/1499561-sha-256-compatibility#14
В письме, которое вместе с сертификатом пришло, написано: Hashing Algorithm: SHA2 with a 256-bit Digest
Это его перезапрашивать на SHA1 нужно? И как точно убедится, что это из-за этого?
Здравствуйте, -prus-, Вы писали:
P>Здравствуйте, Ivan, Вы писали:
I>>Какой алгоритм подписи (signature hash algorithm) указан в сертификате? Verisign сейчас позволяет выпускать сертификаты с sha2, а на Windows 7 этот алгоритм в ядре ОС не поддерживается. Поэтому подпись выглядит действительной, проходит все проверки, а при попытке старта драйвера — ядро отказывается его загружать. I>>Если дело в этом, необходимо перевыпустить сертификат с sha1.
I>>Есть патч для Windows 7 для поддержки sha2, но от сейчас отозван: https://technet.microsoft.com/en-us/library/security/2949927 I>>см. также: https://support.globalsign.com/customer/portal/articles/1499561-sha-256-compatibility#14
P>В письме, которое вместе с сертификатом пришло, написано: Hashing Algorithm: SHA2 with a 256-bit Digest
P>Это его перезапрашивать на SHA1 нужно?
Да, имеет смысл перевыпустить сертификат, выбрав алгоритм SHA1.
P>И как точно убедится, что это из-за этого?
Сообщения об ошибке от ОС в этом случае неинформативные. Можно поискать файлы отозванного патча 2949927, недавно еще находились, и установить его. После этого драйвер должен успешно стартовать. И попробовать установить драйвер на Windows 8, там поддержка SHA2 в ядре есть.