Obtention de la signature du pilote USB MSP430 par Microsoft

11

Je développe un produit qui utilise un microcontrôleur MSP430 avec un module USB intégré. J'ai obtenu un PID de Texas Instruments et utilisé leurs outils pour générer les descripteurs, ainsi qu'un fichier .inf pour installer le logiciel du pilote. Le problème évident est qu'en raison de la nature personnalisée de ces fichiers, une fenêtre contextuelle s'affiche (sous Windows 7) lors du branchement du câble USB qui avertit l'utilisateur que le pilote n'est pas signé. Je crois que sur Windows 8 et Windows 10, il le bloque simplement et ne l'indique pas du tout à l'utilisateur.

Comme il s'agit d'un produit complet que mon entreprise prévoit de publier, nous devons obtenir un certificat de conducteur (je crois sous la forme d'un fichier .cat?) Que nous pouvons fournir au client afin qu'il puisse installer l'appareil. logiciel de pilote sans problème.

J'ai parcouru une bonne partie de la documentation Microsoft (notamment ce document ) en essayant de comprendre ce qui est nécessaire pour faire signer un pilote, mais malheureusement, cela me dépasse pour le moment.

Voici ce que je pense avoir compris jusqu'à présent:

  • Je dois soumettre mon pilote (fichier .inf?) À une autorité de certification (CA) autorisée par Microsoft. Il y en a un certain nombre, donc j'aurais besoin d'en trouver un qui signe les conducteurs.
  • Après avoir sélectionné un CA, je devrai généralement payer des frais annuels (le plus souvent pour 1, 2 ou 3 ans) pour leur service. Tous les pilotes que je génère pendant cette période seront signés de manière permanente, même après l'expiration du service. Si je veux changer le pilote ou en créer un nouveau après l'expiration du service, je devrai acheter le service pour encore 1, 2 ou 3 ans.
  • Après avoir payé les frais, l'AC générera un fichier .cat qui est un certificat garantissant que le pilote que je leur ai donné ne sera pas changé. Si tel est le cas, il ne correspondra plus au fichier .cat et une erreur apparaîtra lors de l'installation

Est-ce correct? Au risque de donner l'impression que je recherche des recommandations pour des autorités de certification spécifiques (je ne le suis pas, je vous en prie), où puis-je trouver une liste des autorités de certification qui sont en mesure de faire cette certification pour moi? Encore mieux seraient leurs sites Web et / ou leurs prix pour différentes durées de service. Quelqu'un ici a-t-il eu une expérience directe pour obtenir un pilote pour un produit basé sur un microcontrôleur USB signé par une autorité de certification, qui pourrait m'aider à comprendre et à suivre le processus? J'ai déjà posté sur les forums MSDN, mais il semble assez mort là-bas - Cela fait deux jours et mon fil n'a que quelques vues.

DerStrom8
la source
Votre pilote est-il une fonctionnalité complète, qui doit exécuter du code en mode noyau, ou s'agit-il uniquement d'un fichier inf? S'il ne s'agit que d'un fichier inf, quels pilotes intégrés (fichiers .sys) charge-t-il?
Jack B
C'est là que j'échoue, je ne connais pas grand-chose au fonctionnement interne des PC et au fonctionnement des pilotes. Mon appareil est conçu autour d'un MSP430 avec un module USB intégré. Cet appareil a simplement une interface CDC sur la connexion USB, donc tout ce qu'il fait est d'ouvrir un port COM virtuel
DerStrom8
Comme la conception se trouve maintenant, elle se trouve en fait sur une carte de développement et lorsque j'essaie d'installer le périphérique à l'aide du fichier .inf, j'obtiens l'erreur standard de Windows 7: davidegrayson.com/signing/img/win7_unverified_publisher.png . En attendant pour les tests, je viens d'utiliser les fichiers .inf et .cat fournis avec l'un des exemples CDC du package MSP430Ware, mais lorsque je publierai ce produit, je ne pourrai plus le faire. Si je ne me trompe pas, cela n'exécute pas le code en mode
kernal
1
En bref: vous pouvez signer avec un certificat de signature de code normal, au prix d'environ 80 £ / an la dernière fois que j'ai regardé. Pas besoin de tous les trucs de signature croisée Microsoft. Mais sur Windows 8.1 et versions antérieures, il n'est pas très fiable (nous ne pouvions pas passer par EN61326 avec lui), alors vous voudrez peut-être aussi avoir une alternative. Si personne ne me bat, j'écrirai une réponse après le dîner.
Jack B
1
@AdamLawrence Je suis revenu quelques heures plus tard et je n'ai pas vu que j'avais besoin d'ajouter quoi que ce soit à votre réponse. Si bien par moi.
Jack B

Réponses:

16

Ce n'est pas si mal, en fait. Je l' ai fait plusieurs fois au travail, l' écriture et la signature d' un .INF / .CAT pour un USB à base PIC24FJ64GB002 Microchip CDC-ACM-à-I 2 interface C.

  • Établissez une relation avec une autorité de certification. Vous devrez leur fournir des informations de base qu'ils valideront. Si vous optez pour la validation étendue (EV), ils en demanderont beaucoup plus, mais vous ne devriez pas avoir besoin d'aller aussi loin. Thawte, Digicert et Comodo sont quelques exemples d'AC.

  • Achetez un certificat de signature de code Authenticode auprès de l'autorité de certification. Voici ce dont vous avez besoin pour signer le fichier .CAT associé à votre fichier .INF. Vous n'avez pas besoin d'un certificat en mode noyau pour ce niveau de signature.

  • Installez le certificat (cela va sans dire)

  • Téléchargez le framework SDK Windows et le Kit de pilotes Windows pour obtenir les outils Microsoft nécessaires (génération et signature de catalogue).

  • Emballez et signez les pilotes:

    • Utilisez inf2cat pour générer le fichier catalogue (.CAT) pour le fichier .INF
    • Utilisez signtool pour signer le fichier de catalogue

À partir de là, vous pouvez créer une sorte de programme d'installation du pilote ou utiliser dpinst à partir du SDK pour effectuer une automatisation de base de l'installation.

EDIT: Notes de divers commentaires ci-dessous:

  1. Créer un fichier .INF pour charger USBSER.SYS ne crée pas un pilote en mode noyau - vous utilisez USBSER.SYS (intégré, signé et approuvé déjà), ne créez pas quelque chose de nouveau - et en tant que tel ne nécessite pas de signature EV certificat et certification WHQL. Un certificat Authenticode de base suffit.
  2. À partir de Windows 10, vous n'avez pas du tout besoin d'un fichier .INF signé pour les périphériques USBSER.SYS, car Windows récupérera automatiquement les périphériques USB CDC-ACM (Class_02). Ils ont également réécrit le pilote à partir de zéro et cela fonctionne beaucoup mieux maintenant (il gère même les suppressions et les réinsertions de périphériques inattendues sans verrouiller le port COM virtuel, ce qui est un énorme avantage!). Cela dit, vous pouvez toujours utiliser l'approche du pilote signé si vous le souhaitez vraiment - le pilote signé fonctionnera toujours. Il y a encore beaucoup de machines Win 8.1 / 8/7 et plus anciennes, donc avoir un pilote signé est toujours quelque peu important pour les périphériques USB CDC-ACM.

Extension supplémentaire sur vos questions:

  • Vous ne soumettez rien pour signature à l'autorité de certification - vous achetez le certificat de signature de code, l'installez sur une machine et effectuez la validation .INF et la signature vous-même.
  • Vous n'avez pas à payer de frais annuels en soi - cependant, le certificat que vous achetez aura une période de validité de 1, 2 ou 3 ans. Lorsque le certificat expire, vous devrez en acheter un nouveau pour pouvoir continuer à signer - tout ce qui a été signé précédemment restera valide, mais vous perdrez la possibilité de signer de nouveaux éléments.
  • Le .CAT est un hachage pour le .INF - toutes les modifications apportées au .INF seront détectées et le certificat ne sera plus valide, ce qui signifie que le .INF se comporterait comme un non signé.
Adam Lawrence
la source
4
Plus de détails: Comment signer les pilotes et exécutables Windows d' Adafruit .
CL.
4
C'est une excellente réponse, très utile en effet. Vous donnez certainement un son beaucoup plus facile que ce à quoi je m'attendais. J'examinerai cela. En attendant, je vais accepter cette réponse en raison des étapes claires et directes fournies. À votre santé!
DerStrom8
2
@ poizan42 Ce n'est pas un pilote en mode kernal. Il s'agit d'un simple périphérique CDC USB qui ouvre uniquement un port COM virtuel. Aucune exécution de code en mode noyau n'est effectuée.
DerStrom8
1
Je voulais juste faire un suivi. Ces étapes ont parfaitement fonctionné avec une seule mise en garde: inf2cat.exe n'est pas fourni avec le SDK Windows, vous devez également installer le Kit de pilotes Windows (WDK): docs.microsoft.com/en-us/windows-hardware/drivers/ … . Merci beaucoup pour votre aide, je suis maintenant en mesure d'installer mon logiciel de pilote sans aucun avertissement - cela montre mon entreprise en tant qu'éditeur comme prévu
DerStrom8
2
Réponse modifiée. Merci d'avoir souligné l'évidence (cela fait quelques années que j'ai installé les chaînes d'outils)
Adam Lawrence