Obtención del controlador USB MSP430 firmado por Microsoft

12

Estoy desarrollando un producto que utiliza un microcontrolador MSP430 con un módulo USB incorporado. Obtuve un PID de Texas Instruments y usé sus herramientas para generar los descriptores, así como un archivo .inf para instalar el software del controlador. El problema obvio es que, debido a la naturaleza personalizada de estos archivos, se presenta una ventana emergente (en Windows 7) al conectar el cable USB que advierte al usuario que el controlador no está firmado. Creo que en Windows 8 y Windows 10 simplemente lo bloquea y no lo indica al usuario en absoluto.

Como este es un producto con todas las funciones que mi compañía planea lanzar, debemos obtener un certificado de conductor (¿creo en la forma de un archivo .cat?) que podamos proporcionar al cliente para que pueda instale el software del controlador del dispositivo sin problemas.

He revisado bastante parte de la documentación de Microsoft (especialmente este documento ) tratando de comprender lo que se requiere para poder firmar un controlador, pero desafortunadamente esto está sobre mi cabeza en este momento.

Esto es lo que creo entender hasta ahora:

  • Necesito enviar mi controlador (¿archivo .inf?) a una autoridad de certificación (CA) autorizada por Microsoft. Hay una serie de estos por ahí, así que tendría que encontrar uno que firme los controladores.
  • Después de seleccionar una CA, generalmente tendré que pagar una tarifa anual (más comúnmente por 1, 2 o 3 años) por su servicio. Todos los controladores que genere durante este tiempo se firmarán de forma permanente, incluso después de que caduque el servicio. Si quiero cambiar el controlador o crear uno nuevo después de que el servicio haya caducado, tendré que comprar el servicio por otros 1, 2 o 3 años.
  • Después de pagar la tarifa, la CA generará un archivo .cat que es un certificado que garantiza que el controlador que les di no se modificará. Si lo hace, ya no coincidirá con el archivo .cat y aparecerá un error durante la instalación

¿Esto es correcto? A riesgo de sonar como si estuviera buscando recomendaciones para CA específicas (no, no me importa), ¿dónde puedo encontrar una lista de CA que puedan hacer esta certificación por mí? Aún mejor sería sus sitios web y / o precios para diferentes duraciones de servicio. ¿Alguien aquí tiene experiencia directa en obtener un controlador para un producto basado en un microcontrolador USB firmado por una CA, que podría ayudarme a entender y pasar por el proceso? Ya tengo publicado en los foros de MSDN pero parece que está bastante muerto allí. Han pasado dos días y mi hilo solo tiene un puñado de vistas.

    
pregunta DerStrom8

1 respuesta

17

En realidad no es tan malo. Hice esto varias veces en el trabajo, escribiendo y firmando un .CF / .CAT para una interfaz C basada en Microchip PIC24FJ64GB002 basada en Microchip.

  • Establezca una relación con una autoridad de certificación. Deberá proporcionarles información básica que validarán. Si va a la Validación Extendida (EV), le pedirán mucho más, pero no debería ir tan lejos. Thawte, Digicert y Comodo son algunos ejemplos de CA.

  • Compre un certificado de firma de código Authenticode de la CA. Esto es lo que necesita para firmar el archivo .CAT asociado con su archivo .INF. No necesita un certificado en modo kernel para este nivel de firma.

  • Instale el certificado (no hace falta decirlo)

  • Descargue el marco del SDK de Windows y Kit de controlador de Windows para obtener las herramientas de Microsoft necesarias (generación y firma de catálogo).

  • Empaquete y firme los controladores:

    • Use inf2cat para generar el archivo de catálogo (.CAT) para el archivo .INF
    • Use signtool para firmar el archivo de catálogo

A partir de este punto, podrías hacer algún tipo de instalador de controladores, o usar dpinst desde el SDK para realizar la automatización básica de la instalación.

EDITAR: Notas de varios comentarios a continuación:

  1. Crear un archivo .INF para cargar USBSER.SYS es no crear un controlador en modo kernel - estás usando USBSER.SYS (integrado, firmado y de confianza ya), no creando algo nuevo - y como tal no requiere un certificado de firma EV y certificación WHQL. Un certificado de Authenticode básico es todo lo que se necesita.
  2. A partir de Windows 10, no necesita un .INF firmado para dispositivos USBSER.SYS, ya que Windows extrae dispositivos USB CDC-ACM (Class_02) de forma automática. También han reescrito el controlador desde cero y ahora funciona mucho mejor (incluso maneja las remociones y reinserciones inesperadas de dispositivos sin bloquear el puerto COM virtual, que es un enorme ¡más!). Dicho esto, aún puede utilizar el enfoque de controlador firmado si realmente lo desea: el controlador firmado seguirá funcionando. Todavía hay muchas máquinas Win 8.1 / 8/7 y anteriores por lo que tener un controlador firmado sigue siendo algo importante para los dispositivos USB CDC-ACM.

Ampliación adicional de sus preguntas:

  • No envía nada para firmar a la AC: compra el certificado de firma de código, lo instala en una máquina, realiza la validación .INF y se firma usted mismo.
  • No es necesario que pague una tarifa anual per se ; sin embargo, el certificado que compre tendrá un período de validez de 1, 2 o 3 años. Cuando el certificado caduque, deberá comprar uno nuevo para poder seguir firmando. Todo lo que se haya firmado anteriormente seguirá siendo válido, pero perderá la capacidad de firmar nuevos documentos.
  • El .CAT es un hash para el .INF: se detectarán todos los cambios en el .INF y el certificado dejará de ser válido, lo que significa que el .INF se comportará como uno sin firmar.
respondido por el Adam Lawrence

Lea otras preguntas en las etiquetas