Подпись кода режима ядра

Я сделал драйвер, и теперь мне нужно его подписать. Он работает в режиме ядра.

Из того, что я прочитал в пошаговом руководстве Microsoft по подписанию кода в режиме ядра, я должен купить сертификат издателя программного обеспечения в коммерческом центре сертификации. В этом документе говорится, что нужно посмотреть в конце и перейти по этой ссылке, чтобы получить список центров сертификации, у которых я могу купить этот сертификат. Я нахожу ссылку очень запутанной, потому что не могу понять, какой именно сертификат мне нужно купить. Мне нужно подписать драйвер, чтобы он устанавливался в 64-битных системах Windows. Прямая ссылка была бы очень кстати (я хотел бы купить ее у GlobalSign).

Это Microsoft Authenticode отсюда?

3 ответа

Решение

Я задал подобный вопрос на форуме разработчиков драйверов Microsoft некоторое время назад. Это их ответ:

Вам необходимо, чтобы ваша компания получила сертификат подписи кода от GlobalSign или VeriSign (другие, перечисленные в этой ссылке, больше не предлагаются). GlobalSign дешевле, но Verisign имеет преимущество в предоставлении доступа к WHQL, если это представляет интерес для вашей фирмы. Это недешево, сертификат Verisign стоит 499 долларов в год. Получив сертификат, вы можете использовать его вместо сертификата для подписи водителя.

Ваша ссылка содержит эту информацию в разделе "Поддерживаемые платформы: цифровая подпись элементов управления ActiveX Windows через Authenticode (32-разрядные и 64-разрядные.exe, .ocx, .dll или другие) и программное обеспечение ядра для Windows. Windows 7 совместима.

Похоже, вы находитесь в правильном месте.

Просто чтобы быть точным: я еще не использовал сертификацию кода, я только изучил это. Я рекомендую вам проверить этот ответ на osronline или форуме разработчиков драйверов Microsoft.

Проверьте https://www.startssl.com/?app=40 - StartSSL предлагает такие сертификаты за 199,00 долларов США.

Кросс-подписанный сертификат CA находится по адресу https://www.startssl.com/certs/ именем microsoft.kernel.mode.pem или microsoft.kernel.mode.crt.

Вы можете купить подпись у Digicert.

Digicert выдаст сертификат кросс-подписи в виде zip-файла. Распакуйте его DigiCert High Assurance EV Root CA.crt

Дважды щелкните по нему и добавьте в личный магазин IE.

Используя IE, экспортируйте сертификат с паролем в файл.pfx

Команда подписать драйвер

signtool sign / t http://timestamp.digicert.com/ / f "путь к файлу.pfx" /p PASSWORD_OF_PFX "путь к файлу.cat драйвера"

Эту же команду можно использовать для подписи файлов.exe. Signtool sign / t http://timestamp.digicert.com/ / f "путь к файлу.pfx" /p PASSWORD_OF_PFX "путь к файлу драйвера.exe"

Убедитесь, что на этой машине есть доступ к Интернету, иначе процесс подписания не будет выполнен.

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

В Vista родилась так называемая политика подписывания ядра (KSP, документ, на который вы ссылались). Насколько мне известно, только VeriSign предлагает такие сертификаты. Насколько я знаю, для этого типа также нет посредников, и вы не сможете получить их, если у вас нет зарегистрированной компании / учреждения, существование которого можно проверить. Т.е. как личность ты уже можешь это забыть.

KSP также требует, чтобы двоичный файл драйвера имел при себе корневой сертификат (от MS), предположительно потому, что некоторые из средств для проверки подписей не были дублированы в ядре, и таким образом это проще.

Чтобы передать WHQL, вам необходимо предоставить подписанный (в соответствии с KSP и, следовательно, включая корневой сертификат) файл драйвера и файл каталога, а также, IIRC, файл.inf. Если вы пройдете тесты (DTM и т. Д.) На всех системах, на которые вы подаете заявку, возвращенный пакет будет включать все отправленные файлы и файл с перекрестной подписью, который требуется для API установки во время установки (API установки также можно использовать в форма DIFx).

Другие вопросы по тегам