Подтвердить что ты не робот

В Windows 8 для сторонних файлов драйверов INF требуется подпись?

Я работаю в компании, которая продает устройства USB и предоставляет для них драйверы.

В Windows 7 вы можете установить и использовать неподписанные файлы драйверов INF для USB-устройств, если они не добавили никакого кода в ядро. Наша компания использует общие драйверы, предоставляемые Microsoft (usbser.sys и winusb.sys), поэтому нам не нужно было подписывать наши пакеты драйверов.

На основе отчета одного из наших клиентов и другого вопроса о переполнении стека Что изменилось в требованиях к сигнатуре драйвера для Windows 8? и форум Arduino, похоже, что Windows 8 Consumer Preview имеет более строгие требования к подписке, которые требуют, чтобы все сторонние файлы INF были подписаны. Сообщение об ошибке, которое люди получают при попытке установить драйверы, работающие в Windows 7, выглядит следующим образом:

Сторонняя версия INF не содержит информации о цифровой подписи.

Какое официальное слово от Microsoft подтверждает, что подписи все равно потребуются в окончательной версии Windows 8?. Предложение или два из MSDN.com было бы достаточно, но я могу " найти что-нибудь.

Я подумываю о покупке сертификата подписи, но прежде чем заплатить 200 долларов, я хочу быть уверенным, что мне это действительно понадобится в долгосрочной перспективе. Возможно, что новое требование о подписке находится только в предварительном просмотре пользователя, а не в реальной версии?

4b9b3361

Ответ 1

Чтобы ответить на мой собственный вопрос: Да, окончательная версия Windows 8 требует, чтобы все файлы INF были подписаны, но вам не нужно отправлять драйверы WHQL. Я написал об этом требовании и многое другое в своей статье Практический код Windows и подписание драйверов.

Ответ 2

Требуется не только подписывание INF файлов, но и их подписка на сертификат WHQL, а не тот же которые вы используете для встроенных значков .sys файлов и тому подобного. Использование моего сертификата подписи кода в файле INF не работает вообще. (Такие же проблемы, как если бы они оставались без знака.)

EDIT:

Это то, что Microsoft хочет, чтобы вы думали. Они сказали, что некоторые классы драйверов должны быть подписаны WHQL, иначе они не будут работать и что Authenticode подписывает работу только для тех, t имеет WHQL-процесс.

Оказывается, вы можете использовать CAN Authenticode для обозначения пакетов драйверов, за исключением того, что вам нужно позаботиться о них и подписать их, как если бы теперь был код ядра, что означает получение правильного кросс-сертификата для CA (из Перекрестные сертификаты для подписи кода режима ядра, сейчас их много, включая StartCom, которые у меня есть (класс 2, 60 долларов США в течение двух лет, но они не могут быть временными). Предоставьте этот кросс-сертификат (не такой, как ваш самозаверяющий сертификат CA или их промежуточный сертификат). Он доступен только на этой странице MSDN ) в SignTool с помощью переключателя /ac.

Затем используйте SignTool для проверки с помощью переключателя /kp, чтобы убедиться, что вы перекрестно подписали их. Проверка SignTool без каких-либо переключателей. ТРЕБУЕТСЯ, что файлы .cat являются WHQL-подписанными, а переключатель /pa, который, казалось, был ОК до этого, теперь слишком слаб и применим только к подписанию без драйвера (например, файлы EXE, ClickOnce и т.д.).

Если вы не хотите приобретать свой собственный сертификат подписи на уровне ядра (что проще, чем раньше, если честно, до того, как он был ограничен VeriSign супердорогой и GlobalSign 200 долларов в год, я думаю, Microsoft увидел, что не многие люди пишут эксплойты уровня ядра для x64-систем), вы можете сделать самозаверяющий корневой CA, установить установщик драйверов установить в LocalMachine "Trusted Root Certification Authority" (см. certmgr.exe), а затем установите файл .cat, который был подписан этим. Конечно, поскольку это не сертификат кода на уровне ядра, вы ДОЛЖНЫ использовать только файлы .sys, которые уже имеют встроенный код кода на уровне ядра от кого-то другого (что означает, что вы можете изменять только файлы .inf в пакетах драйверов), Видимо, есть некоторые лазейки, которые позволяют самозаверяющим сертификатам подписывать файлы .cat(если вы создали свой собственный CA, а затем подписали сертификат с ним, а затем подписали ваши файлы .cat с этим, не будет работать как это).

Для пакета, который делает это для каждого пакета INF INF, который он делает, см. libwdi и как их самозаверяющие сертификаты в файлах cat позволяют устанавливать в Windows 8.

EDIT2:

Убрано упоминание сертификата разработчика CERTUM "с открытым исходным кодом", поскольку оно не перекрестно сертифицировано Microsoft (тот, который вы получаете, не является сертификатом Certum TRUSTED NETWORK, который перекрестно сертифицирован Microsoft).