Obtener el controlador USB MSP430 firmado por Microsoft

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, aparece 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 se lo indica al usuario en absoluto.

Como se trata de un producto con todas las funciones que mi empresa planea lanzar, necesitamos obtener un certificado de controlador (creo que en forma de archivo .cat) que podemos proporcionar al cliente para que pueda instalar el dispositivo. software de controlador sin problema.

He revisado bastante la documentación de Microsoft (sobre todo este documento ) tratando de obtener una idea de lo que se requiere para obtener un controlador firmado, pero desafortunadamente esto está fuera de 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 varios de estos por ahí, por lo que necesitaría encontrar uno que firme a los controladores.
  • Después de seleccionar una CA, generalmente tendré que pagar una tarifa anual (generalmente por 1, 2 o 3 años) por su servicio. Cualquier controlador que genere durante este tiempo se firmará de forma permanente, incluso después de que caduque el servicio. Si quiero cambiar el controlador o crear uno nuevo después de que haya vencido el servicio, 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 asegura que el controlador que les di no se cambiará. Si lo hace, ya no coincidirá con el archivo .cat y aparecerá un error durante la instalación.

¿Es esto correcto? A riesgo de sonar como si estuviera buscando recomendaciones para CA específicas (no lo estoy, eso sí), ¿dónde puedo encontrar una lista de CA que pueden hacer esta certificación por mí? Incluso mejores serían sus sitios web y/o precios para diferentes duraciones de servicio. ¿Alguien aquí ha tenido experiencia directa en obtener un controlador para un producto basado en un microcontrolador USB firmado por una CA, que podría ayudarme a comprender y superar el proceso? Ya publiqué en los foros de MSDN , pero parece bastante muerto. Han pasado dos días y mi hilo solo tiene un puñado de visitas.

¿Su controlador es una cosa con todas las funciones, que necesita ejecutar código en modo kernel, o es solo un archivo inf? Si es solo un archivo inf, ¿qué controladores integrados (archivos .sys) carga?
Aquí es donde fallo, no sé mucho sobre el funcionamiento interno de las PC y cómo funcionan los controladores. Mi dispositivo está diseñado en torno a un MSP430 con un módulo USB incorporado. Este dispositivo simplemente tiene una interfaz CDC sobre la conexión USB, por lo que todo lo que hace es abrir un puerto COM virtual
Tal como se encuentra el diseño ahora, en realidad está en una placa de desarrollo y cuando intento instalar el dispositivo usando el archivo .inf, aparece el error estándar de Windows 7: davidegrayson.com/signing/img/win7_unverified_publisher.png . Mientras tanto, para las pruebas, he estado usando los archivos .inf y .cat proporcionados con uno de los ejemplos de CDC del paquete MSP430Ware, pero cuando lance este producto, ya no podré hacerlo. Si no me equivoco, esto no ejecuta código en modo kernel
Si el controlador que planea distribuir solo incluye un archivo inf, entonces las reglas son más simples. No sé qué hay en los ejemplos de CDC que mencionas, ya que aquí no usamos los chips MSP340. Y parece que MSP340Ware es una descarga de 500 MB. ¿Puedes poner los controladores que planeas distribuir en algún lugar donde pueda echar un vistazo? Además, ¿tiene máquinas Win7 y Win10 para probar? El modelo de firma de controlador y soporte serie USB es bastante diferente.
Esto sería solo un archivo .inf, sí. Tengo máquinas Win7 para probar, y estoy seguro de que podría tener en mis manos una máquina Win10. En cuanto al archivo .inf, debería poder colocarlo en algún lugar para que pueda verlo. Mientras tanto, aquí está el contenido del archivo .inf del ejemplo de CDC, tomado del paquete MSP430Ware: pastebin.com/xsrFKUZM
En resumen: puede firmar eso con un certificado de firma de código normal, con un precio de alrededor de £ 80 / año la última vez que miré. No hay necesidad de todas las cosas de firmas cruzadas de Microsoft. Pero en Windows 8.1 y versiones anteriores no es súper confiable (no pudimos superar EN61326 con él), por lo que es posible que también desee tener una alternativa en fila. Si nadie me gana, escribiré una respuesta después de la cena.
Gracias por la ayuda. Supongo que si mi comprensión (descrita en mi pregunta inicial) es correcta, entonces lo que estoy buscando ahora es una lista de empresas que pueden hacer el "certificado de firma de código normal". He oído hablar de algunas, como Verisign, Globalsign, etc. ¿Son estos los tipos de empresas que debería buscar para esto? ¿Y me proporcionan el archivo .cat que necesito para instalar el controlador sin advertencias?
Nuevamente, estoy preguntando sobre el tipo de empresa, no sobre empresas específicas. No quiero llevar esta publicación a un territorio fuera de tema donde parece que estoy pidiendo recomendaciones de servicios reales.
@JackB Lo siento amigo, te adelanté en el pase.
@AdamLawrence Regresé unas horas más tarde y no vi que necesitaba agregar algo a su respuesta. Así que bien por mí.
Ambos fueron muy útiles, ¡muchas gracias una vez más!

Respuestas (1)

No es tan malo, en realidad. He hecho esto varias veces en el trabajo, escribiendo y firmando un .INF/.CAT para una interfaz USB CDC-ACM-to-I 2 C basada en Microchip PIC24FJ64GB002.

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

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

  • Instale el certificado (no hace falta decirlo)

  • Descargue el marco SDK de Windows y el kit de controladores de Windows para obtener las herramientas de Microsoft necesarias (generación y firma de catálogos).

  • Empaquetar y firmar 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

Desde este punto, puede crear algún tipo de instalador de controladores o usar dpinst del 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 no es crear un controlador en modo kernel: está utilizando USBSER.SYS (integrado, firmado y confiable), no está creando algo nuevo, y como tal no requiere una firma EV Certificado y certificación WHQL. Un certificado básico de Authenticode es todo lo que se necesita.
  2. A partir de Windows 10, no necesita un .INF firmado en absoluto para los dispositivos USBSER.SYS, ya que Windows detectará los dispositivos USB CDC-ACM (Class_02) de forma automática. También reescribieron el controlador desde cero y ahora funciona mucho mejor (incluso maneja extracciones y reinserciones inesperadas de dispositivos sin bloquear el puerto COM virtual, ¡lo cual es una gran ventaja!). Dicho esto, aún puede usar el enfoque del controlador firmado si realmente lo desea: el controlador firmado seguirá 'funcionando'. Todavía hay muchas máquinas Win 8.1/8/7 y más antiguas, por lo que tener un controlador firmado sigue siendo algo importante para los dispositivos USB CDC-ACM.

Mayor expansión en sus preguntas:

  • No envía nada para firmar a la CA: compra el certificado de firma de código, lo instala en una máquina y realiza la validación .INF y firma usted mismo.
  • No necesita pagar 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 firmado anteriormente seguirá siendo válido, pero perderá la capacidad de firmar cosas nuevas.
  • El .CAT es un hash para el .INF: se detectará cualquier cambio en el .INF y el certificado ya no será válido, lo que significa que el .INF se comportaría como uno sin firmar.
Esta es una excelente respuesta, muy útil por cierto. Definitivamente haces que suene mucho más fácil de lo que esperaba. Voy a mirar en esto. Mientras tanto, aceptaré esta respuesta debido a los pasos claros y directos proporcionados. ¡Salud!
No, necesita un certificado EV ahora: "A partir de Windows 10, versión 1607, Windows no cargará ningún controlador nuevo en modo kernel que no esté firmado por el Portal de desarrollo. Para obtener su controlador firmado, primero regístrese para el desarrollador de hardware de Windows programa Center. Tenga en cuenta que se requiere un certificado de firma de código EV para establecer una cuenta en el panel de control". Fuente: docs.microsoft.com/en-us/windows-hardware/drivers/install/…
@ poizan42 Este no es un controlador de modo kernel. Este es un dispositivo CDC USB simple que solo abre un puerto COM virtual. No se realiza ninguna ejecución de código en modo kernel.
Solo quería hacer un seguimiento. Estos pasos funcionaron perfectamente con una sola advertencia: inf2cat.exe no viene con el SDK de Windows, también debe instalar el Kit de controladores de Windows (WDK): docs.microsoft.com/en-us/windows-hardware/drivers/ … . Muchas gracias por su ayuda, ahora puedo instalar el software de mi controlador sin ninguna advertencia; muestra a mi empresa como el editor como se esperaba.
Respuesta modificada. Gracias por señalar lo obvio (han pasado algunos años desde que instalé las cadenas de herramientas)