Получение MSP430 USB-драйвера, подписанного Microsoft

11

Я разрабатываю продукт, который использует микроконтроллер MSP430 со встроенным USB-модулем. Я получил PID от Texas Instruments и использовал их инструменты для генерации дескрипторов, а также INF-файл для установки программного обеспечения драйвера. Очевидная проблема заключается в том, что из-за пользовательского характера этих файлов при подключении USB-кабеля появляется всплывающее окно (в Windows 7), которое предупреждает пользователя о том, что драйвер не подписан. Я полагаю, что в Windows 8 и Windows 10 это просто блокирует его и не указывает на это пользователю вообще.

Поскольку это полнофункциональный продукт, который моя компания планирует выпустить, нам необходимо получить сертификат драйвера (я полагаю, в виде файла .cat?), Который мы можем предоставить клиенту, чтобы он мог установить устройство Драйвер программного обеспечения без проблем.

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

Это то, что я думаю, я понимаю до сих пор:

  • Мне нужно отправить свой драйвер (файл .inf?) В авторизованный центр сертификации Microsoft (CA). Там есть много таких, поэтому мне нужно будет найти тот, который подписывает водителей.
  • После выбора CA, как правило, мне нужно будет платить ежегодную плату (чаще всего за 1, 2 или 3 года) за их обслуживание. Любые драйверы, которые я создаю в течение этого времени, будут подписаны на постоянной основе, даже после истечения срока службы. Если я хочу сменить драйвер или создать новый после истечения срока службы, мне нужно будет купить услугу еще на 1, 2 или 3 года.
  • После уплаты комиссии ЦС сгенерирует файл .cat, представляющий собой сертификат, гарантирующий, что предоставленный мной драйвер не будет изменен. Если это так, он больше не будет соответствовать .cat-файлу, и во время установки появится ошибка

Это верно? С риском, что я буду искать рекомендации для конкретных центров сертификации (не так, заметьте), где я могу найти список центров сертификации, которые могут сделать эту сертификацию для меня? Еще лучше были бы их вебсайты и / или цены для различной продолжительности обслуживания. Кто-нибудь здесь имел непосредственный опыт получения драйвера для продукта на основе микроконтроллера USB, подписанного CA, который мог бы помочь мне понять и пройти через этот процесс? Я уже писал на форумах MSDN, но там он выглядит довольно мертвым - прошло два дня, и у моей ветки только несколько просмотров.

DerStrom8
источник
Ваш драйвер - это полнофункциональная вещь, которая должна выполнять код в режиме ядра, или это только файл inf? Если это просто файл inf, какие встроенные драйверы (файлы .sys) он загружает?
Джек Б
Здесь я терплю неудачу, я не очень разбираюсь во внутренней работе ПК и в том, как работают драйверы. Мое устройство разработано на базе MSP430 со встроенным USB-модулем. Это устройство просто имеет интерфейс CDC через USB-соединение, поэтому все, что он делает, это открывает виртуальный COM-порт
DerStrom8
Поскольку дизайн находится сейчас, он фактически находится на плате разработки, и когда я пытаюсь установить устройство с помощью файла .inf, я получаю стандартную ошибку из Windows 7: davidegrayson.com/signing/img/win7_unverified_publisher.png . Тем временем для тестирования я только что использовал файлы .inf и .cat, предоставленные с одним из примеров CDC из пакета MSP430Ware, но когда я выпущу этот продукт, я больше не смогу этого делать. Если я не ошибаюсь, это не выполняет код в режиме
Kernal
1
Вкратце: вы можете подписать это с помощью обычного сертификата для подписи кода по цене около 80 фунтов стерлингов в год, когда я смотрел последний раз. Нет необходимости во всем, что связано с Microsoft. Но в Windows 8.1 и более ранних версиях она не является сверхнадежной (мы не могли пройти с ней по EN61326), поэтому вы можете захотеть иметь альтернативную версию. Если меня никто не побьет, я напишу ответ после обеда.
Джек Б
1
@AdamLawrence Я вернулся через несколько часов и не увидел, что мне нужно что-то добавить к вашему ответу. Так хорошо со мной.
Джек Б.

Ответы:

16

На самом деле все не так плохо. Я сделал это несколько раз на работе, написание и подписание .inf / .CAT для Microchip PIC24FJ64GB002 на базе USB CDC-ACM-к-I 2 интерфейса C.

  • Установить отношения с центром сертификации. Вам нужно будет предоставить им некоторую основную информацию, которую они будут проверять. Если вы пойдете на расширенную проверку (EV), они попросят намного больше, но вам не нужно заходить так далеко. Thawte, Digicert и Comodo являются некоторыми примерами CA.

  • Приобретите сертификат подписи кода Authenticode в CA. Это то, что вам нужно, чтобы подписать файл .CAT, связанный с вашим файлом .INF. Вам не нужен сертификат режима ядра для этого уровня подписи.

  • Установить сертификат (само собой разумеется)

  • Загрузите платформу Windows SDK и комплект драйверов Windows, чтобы получить необходимые инструменты Microsoft (создание и подпись каталога).

  • Упакуйте и подпишите драйверы:

    • Используйте inf2cat для создания файла каталога (.CAT) для файла .INF.
    • Используйте signtool для подписи файла каталога

С этого момента вы можете сделать какой-то вариант установки драйвера или использовать dpinst из SDK для базовой автоматизации установки.

РЕДАКТИРОВАТЬ: Примечания от различных комментариев ниже:

  1. Создание файла .INF для загрузки USBSER.SYS не создает драйвер режима ядра - вы используете USBSER.SYS (уже встроенный, уже подписанный и доверенный), не создаете что-то новое - и поэтому не требует подписи EV сертификат и сертификация WHQL. Базовый сертификат Authenticode - это все, что нужно.
  2. Начиная с Windows 10, для устройств USBSER.SYS вам вообще не нужен подписанный файл .INF, поскольку Windows автоматически подхватывает устройства USB CDC-ACM (Class_02). Они также переписали драйвер с нуля, и теперь он работает намного лучше (он даже обрабатывает неожиданные удаления и повторные вставки устройств без блокировки виртуального COM-порта, что является огромным плюсом!). Тем не менее, вы все еще можете использовать подход с подписанным драйвером, если вы действительно этого хотите - подписанный драйвер все еще будет «работать». Есть все еще много Win 8.1 / 8/7 и более старых машин, поэтому подписанный драйвер все еще несколько важен для устройств USB CDC-ACM.

Дальнейшее расширение ваших вопросов:

  • Вы не отправляете что-либо для подписи в ЦС - вы покупаете сертификат для подписи кода, устанавливаете его на компьютере и самостоятельно проверяете и подписываете .INF.
  • Вам не нужно платить ежегодную плату как таковую - однако купленный вами сертификат будет иметь срок действия 1, 2 или 3 года. Когда срок действия сертификата истечет, вам нужно будет купить новый, чтобы иметь возможность продолжать подписывать - все ранее подписанное останется действительным, но вы потеряете возможность подписывать новые материалы.
  • .CAT является хешем для .INF - любые изменения в .INF будут обнаружены, и сертификат больше не будет действительным, что означает, что .INF будет вести себя как неподписанный.
Адам Лоуренс
источник
4
Более подробная информация: Adafruit's Как подписать драйверы и исполняемые файлы Windows .
кл.
4
Это отличный ответ, очень полезный. Вы определенно делаете это звучит намного проще, чем я ожидал. Я посмотрю на это. В то же время я собираюсь принять этот ответ из-за четких, простых шагов. Ура!
DerStrom8
2
@ poizan42 Это не драйвер режима ядра. Это простое устройство USB CDC, которое открывает только виртуальный COM-порт. Выполнение кода в режиме Kernal не выполняется.
DerStrom8
1
Просто хотел продолжить. Эти шаги прекрасно работали только с одним предупреждением: inf2cat.exe не поставляется с Windows SDK, вам также необходимо установить Windows Driver Kit (WDK): docs.microsoft.com/en-us/windows-hardware/drivers/ ... . Огромное спасибо за вашу помощь, теперь я могу установить драйвер без каких-либо предупреждений - он показывает мою компанию как издателя, как и ожидалось
DerStrom8
2
Ответ исправлен. Спасибо за указание на очевидное (прошло несколько лет с тех пор, как я установил наборы инструментов)
Адам Лоуренс