4

У меня есть драйвер режима ядра, и я должен установить его на 64-разрядную версию Win 7. Это должно быть с цифровой подписью. Я подписал его цифровой подписью, используя dseo13b.exe. Но когда я загружаю драйвер, я получаю сообщение об ошибке в системном журнале событий, говорящее

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

Я не хочу использовать тестовый режим подписи. Как мне решить это? Нужно ли мне получить сертификат от Microsoft?

Я разработал драйвер и теперь заставляю его работать на 64-битной машине.

Моя компания может приобрести сертификат у verisign, но что мне делать после получения сертификата. Как связать файл драйвера с полученным сертификатом? А также как связать перекрестный сертификат, загруженный из Интернета, с сертификатом, полученным от Verisign? Я прочитал документ KMSC_WalkThru (Как выпустить-подписать модуль ядра), но эти вещи не были ясны из него. Не могли бы вы помочь.

Также Как я могу получить следующее:

mySPCfile.spc   Your public key certificate file. 
myPVKfile.pvk   Your private key certificate file. 
myPVKpassword   

Пароль для файла сертификата закрытого ключа. Упоминается здесь

1 ответ1

7

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

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

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

Sign.bat

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Signs the project output.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Usage
:: 
:: Post-build event command line:
:: Call "$(ProjectDir)..\..\Sign.bat" "$(ConfigurationName)" "$(TargetPath)"
:: 
:: Run the post-build event:
:: When the build updates the project output

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Input Parameters
:: 
:: %~1   $(ConfigurationName)    The file's configuration.  This function will
::                               use a different certificate for "Debug"
::                               configurations.
:: %~2   $(TargetPath)           The full path of the first file to sign.
:: %~3+  FileName                The names of the remaining files to sign.
::                               These files must reside in the same directory
::                               as %2.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Validate the parameters.
If "%~1"=="Debug" Exit /B 0
If "%~1"=="" Goto Error
If "%~2"=="" Goto Error
Goto Valid

:Error
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Report that the syntax is incorrect.
Echo One or more parameters are missing.
Echo.
Echo %~nx0 configuration filename1 [filename2 ...]
Echo.
Echo configuration      The project configuration.  Usually "Debug" or "Release".
Echo filename1          The full path of the first file to sign.
Echo filename2          The names of addition files to sign.  These files must
Echo                    reside in the same folder as "filename1".
Echo.
Exit /B 1

:Valid
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Change to the assembly's folder.
%~d2
CD %~dp2

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Prepare the list of files to sign.
Set FileList=
:CreateFileList
Set FileList=%FileList% %~snx2
Shift /2
If Not "%~2"=="" Goto CreateFileList

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Sign the assembly files.
Set Store=my
Set Certificate=type the name of your certificate here
Set TimeStampUrl=http://timestamp.verisign.com/scripts/timestamp.dll
C:\WinDDK\7600.16385.1\bin\x86\SignTool.exe Sign /s "%Store%" /n "%Certificate%" /t "%TimeStampUrl%" %FileList%
If %ErrorLevel%==1 Exit /B 1

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Verify the digital signature is valid.
C:\WinDDK\7600.16385.1\bin\x86\SignTool.exe Verify /pa %FileList%

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .