MSP430 USB-Treiber von Microsoft signieren lassen

Ich entwickle ein Produkt, das einen MSP430-Mikrocontroller mit eingebautem USB-Modul verwendet. Ich habe eine PID von Texas Instruments erhalten und ihre Tools zum Generieren der Deskriptoren sowie einer .inf-Datei zum Installieren der Treibersoftware verwendet. Das offensichtliche Problem ist, dass aufgrund der benutzerdefinierten Natur dieser Dateien beim Einstecken des USB-Kabels ein Popup angezeigt wird (unter Windows 7), das den Benutzer warnt, dass der Treiber nicht signiert ist. Ich glaube, unter Windows 8 und Windows 10 wird es einfach blockiert und dem Benutzer überhaupt nicht angezeigt.

Da dies ein Produkt mit vollem Funktionsumfang ist, das mein Unternehmen veröffentlichen möchte, benötigen wir ein Treiberzertifikat (ich glaube in Form einer .cat-Datei?), das wir dem Kunden zur Verfügung stellen können, damit er das Gerät installieren kann Treibersoftware ohne Probleme.

Ich habe ziemlich viel von der Microsoft-Dokumentation (insbesondere dieses Dokument ) durchgesehen, um zu verstehen, was erforderlich ist, um einen Treiber signieren zu lassen, aber leider geht mir das im Moment nicht aus dem Kopf.

Folgendes glaube ich bisher verstanden zu haben:

  • Ich muss meinen Treiber (INF-Datei?) an eine von Microsoft autorisierte Zertifizierungsstelle (CA) übermitteln. Es gibt eine Reihe von diesen da draußen, also müsste ich einen finden, der Fahrer signiert.
  • Nachdem ich eine Zertifizierungsstelle ausgewählt habe, muss ich im Allgemeinen eine Jahresgebühr (meistens für 1, 2 oder 3 Jahre) für ihren Service zahlen. Alle Treiber, die ich während dieser Zeit generiere, werden dauerhaft signiert, auch nach Ablauf des Dienstes. Wenn ich den Treiber ändern oder einen neuen erstellen möchte, nachdem der Service abgelaufen ist, muss ich den Service für weitere 1, 2 oder 3 Jahre kaufen.
  • Nach Zahlung der Gebühr generiert die Zertifizierungsstelle eine .cat-Datei, bei der es sich um ein Zertifikat handelt, das sicherstellt, dass der von mir angegebene Treiber nicht geändert wird. Wenn dies der Fall ist, stimmt es nicht mehr mit der .cat-Datei überein und während der Installation wird ein Fehler angezeigt

Ist das richtig? Auf die Gefahr hin, dass es so klingt, als würde ich nach Empfehlungen für bestimmte Zertifizierungsstellen suchen (bin ich wohlgemerkt nicht), wo finde ich eine Liste mit Zertifizierungsstellen, die diese Zertifizierung für mich durchführen können? Noch besser wären ihre Websites und/oder Preise für unterschiedliche Servicedauern. Hat hier jemand direkte Erfahrung damit, einen Treiber für ein USB-Mikrocontroller-basiertes Produkt zu bekommen, das von einer Zertifizierungsstelle signiert wurde, die mir helfen könnte, den Prozess zu verstehen und zu bewältigen? Ich habe bereits in den MSDN-Foren gepostet, aber es scheint dort ziemlich tot zu sein - es ist zwei Tage her und mein Thread hat nur eine Handvoll Aufrufe.

Ist Ihr Treiber ein voll funktionsfähiges Ding, das Code im Kernelmodus ausführen muss, oder ist es nur eine INF-Datei? Wenn es sich nur um eine INF-Datei handelt, welche integrierten Treiber (.sys-Dateien) werden geladen?
Hier scheitere ich, ich weiß nicht viel über das Innenleben von PCs und wie Treiber funktionieren. Mein Gerät basiert auf einem MSP430 mit eingebautem USB-Modul. Dieses Gerät hat einfach eine CDC-Schnittstelle über die USB-Verbindung, also öffnet es nur einen virtuellen COM-Port
Da das Design jetzt sitzt, befindet es sich tatsächlich auf einem Entwicklungsboard, und wenn ich versuche, das Gerät mithilfe der INF-Datei zu installieren, erhalte ich den Standardfehler von Windows 7: davidegrayson.com/signing/img/win7_unverified_publisher.png . In der Zwischenzeit habe ich zum Testen nur die .inf- und .cat-Dateien verwendet, die mit einem der CDC-Beispiele aus dem MSP430Ware-Paket bereitgestellt wurden, aber wenn ich dieses Produkt herausgebe, kann ich das nicht mehr tun. Wenn ich mich nicht irre, führt dies keinen Code im Kernal-Modus aus
Wenn der Treiber, den Sie verteilen möchten, nur eine INF-Datei enthält, sind die Regeln einfacher. Ich weiß nicht, was in den von Ihnen erwähnten CDC-Beispielen enthalten ist, da wir hier keine MSP340-Chips verwenden. Und es sieht so aus, als wäre MSP340Ware ein 500-MB-Download. Können Sie die Treiber, die Sie verteilen möchten, irgendwo hinstellen, wo ich sie mir ansehen kann? Haben Sie auch Win7- und Win10-Computer zum Testen? Das Modell für serielle USB-Unterstützung und Treibersignierung ist ganz anders.
Dies wäre nur eine .inf-Datei, ja. Ich habe Win7-Rechner zum Testen, und ich bin mir sicher, dass ich einen Win10-Rechner in die Finger bekommen könnte. Was die .inf-Datei betrifft, sollte ich sie irgendwo aufhängen können, damit Sie sie sehen können. In der Zwischenzeit ist hier der Inhalt der .inf-Datei des CDC-Beispiels aus dem MSP430Ware-Paket: pastebin.com/xsrFKUZM
Kurz gesagt: Sie können das mit einem normalen Code Signing-Zertifikat signieren, das zuletzt etwa 80 £ / Jahr kostet. Keine Notwendigkeit für all das Microsoft-Cross-Signing-Zeug. Aber unter Windows 8.1 und früher ist es nicht sehr zuverlässig (wir konnten EN61326 damit nicht überstehen), also möchten Sie vielleicht auch eine Alternative in der Reihe haben. Wenn mir keiner zuvorkommt, schreibe ich nach dem Abendessen eine Antwort.
Danke für die Hilfe. Ich nehme an, wenn mein Verständnis (beschrieben in meiner ersten Frage) richtig ist, dann suche ich jetzt eine Liste von Unternehmen, die das "normale Codesignaturzertifikat" erstellen können. Ich habe von einigen gehört, wie Verisign, Globalsign usw. Sind das die Arten von Unternehmen, an die ich mich wenden sollte? Und stellen sie die .cat-Datei zur Verfügung, die ich benötige, um den Treiber ohne Warnungen zu installieren?
Auch hier frage ich nach der Art des Unternehmens, nicht nach bestimmten Unternehmen. Ich möchte diesen Beitrag nicht in ein Off-Topic-Gebiet führen, wo es so aussieht, als würde ich nach tatsächlichen Serviceempfehlungen fragen.
@JackB Tut mir leid, Kumpel, habe dich zum Pass geschlagen.
@AdamLawrence Ich kam ein paar Stunden später zurück und sah nicht, dass ich Ihrer Antwort etwas hinzufügen musste. Also gut von mir.
Ihr wart beide sehr hilfreich, vielen Dank noch einmal!

Antworten (1)

Es ist eigentlich nicht so schlimm. Ich habe dies einige Male bei der Arbeit getan, indem ich eine .INF/.CAT-Datei für eine PIC24FJ64GB002-basierte USB-CDC-ACM-zu-I 2 C-Schnittstelle von Microchip geschrieben und signiert habe.

  • Stellen Sie eine Beziehung zu einer Zertifizierungsstelle her. Sie müssen ihnen einige grundlegende Informationen zur Verfügung stellen, die sie validieren werden. Wenn Sie sich für Extended Validation (EV) entscheiden, werden sie viel mehr verlangen, aber Sie sollten nicht so weit gehen müssen. Thawte, Digicert und Comodo sind einige Beispiele für Zertifizierungsstellen.

  • Erwerben Sie ein Authenticode-Codesignaturzertifikat von der Zertifizierungsstelle. Dies ist, was Sie benötigen, um die .CAT-Datei zu signieren, die Ihrer .INF-Datei zugeordnet ist. Für diese Signierebene benötigen Sie kein Kernelmoduszertifikat.

  • Zertifikat installieren (selbstverständlich)

  • Laden Sie das Windows SDK-Framework und das Windows Driver Kit herunter , um die erforderlichen Microsoft-Tools zu erhalten (Kataloggenerierung und -signierung).

  • Packen und signieren Sie die Treiber:

    • Verwenden Sie inf2cat, um die Katalogdatei (.CAT) für die .INF-Datei zu generieren
    • Verwenden Sie signtool, um die Katalogdatei zu signieren

Von diesem Punkt an könnten Sie eine Art Treiberinstallationsprogramm erstellen oder dpinst aus dem SDK verwenden, um eine grundlegende Installationsautomatisierung durchzuführen.

BEARBEITEN: Anmerkungen aus verschiedenen Kommentaren unten:

  1. Das Erstellen einer .INF-Datei zum Laden von USBSER.SYS erstellt keinen Kernelmodustreiber - Sie verwenden USBSER.SYS (bereits integriert, signiert und vertrauenswürdig), erstellen nichts Neues - und erfordern daher keine EV-Signierung Zertifikat und WHQL-Zertifizierung. Es wird lediglich ein einfaches Authenticode-Zertifikat benötigt.
  2. Beginnend mit Windows 10 benötigen Sie für USBSER.SYS-Geräte überhaupt keine signierte .INF-Datei, da Windows automatisch USB-CDC-ACM-Geräte (Class_02) aufnimmt . Sie haben auch den Treiber von Grund auf neu geschrieben und er funktioniert jetzt viel besser (er verarbeitet sogar unerwartete Geräteentfernungen und Wiedereinfügungen, ohne den virtuellen COM-Port zu sperren, was ein großes Plus ist!). Das heißt, Sie können immer noch den Ansatz mit signierten Treibern verwenden, wenn Sie es wirklich wollen - der signierte Treiber wird immer noch "funktionieren". Es gibt immer noch viele Win 8.1/8/7 und ältere Maschinen da draußen, daher ist es immer noch wichtig, einen signierten Treiber für USB CDC-ACM-Geräte zu haben.

Weitere Erweiterung zu Ihren Fragen:

  • Sie reichen nichts zum Signieren bei der Zertifizierungsstelle ein – Sie kaufen das Codesignaturzertifikat, installieren es auf einem Computer und führen die .INF-Validierung und Signierung selbst durch.
  • Sie müssen an sich keine Jahresgebühr zahlen – das von Ihnen gekaufte Zertifikat hat jedoch entweder eine Gültigkeitsdauer von 1, 2 oder 3 Jahren. Wenn das Zertifikat abläuft, müssen Sie ein neues kaufen, um weiterhin signieren zu können – alles, was zuvor signiert wurde, bleibt gültig, aber Sie verlieren die Möglichkeit, neue Sachen zu signieren.
  • Die .CAT ist ein Hash für die .INF - alle Änderungen an der .INF werden erkannt und das Zertifikat ist nicht mehr gültig, was bedeutet, dass sich die .INF wie eine unsignierte verhält.
Dies ist eine ausgezeichnete Antwort, in der Tat sehr hilfreich. Sie lassen es definitiv viel einfacher klingen, als ich erwartet hatte. Ich werde das prüfen. In der Zwischenzeit werde ich diese Antwort aufgrund der klaren, unkomplizierten Schritte akzeptieren. Beifall!
Nein, Sie benötigen jetzt ein EV-Zertifikat: „Ab Windows 10, Version 1607, lädt Windows keine neuen Kernel-Modus-Treiber, die nicht vom Dev-Portal signiert sind. Um Ihren Treiber signieren zu lassen, registrieren Sie sich zuerst beim Windows Hardware Dev Center-Programm. Beachten Sie, dass ein EV-Codesignaturzertifikat erforderlich ist, um ein Dashboard-Konto einzurichten." Quelle: docs.microsoft.com/en-us/windows-hardware/drivers/install/…
@poizan42 Dies ist kein Kernal-Mode-Treiber. Dies ist ein einfaches USB-CDC-Gerät, das nur einen virtuellen COM-Port öffnet. Es wird keine Codeausführung im Kernal-Modus durchgeführt.
Wollte nur nachhaken. Diese Schritte funktionierten perfekt mit nur einer Einschränkung: inf2cat.exe wird nicht mit dem Windows SDK geliefert, Sie müssen auch das Windows Driver Kit (WDK) installieren: docs.microsoft.com/en-us/windows-hardware/drivers/ … . Vielen Dank für Ihre Hilfe, ich kann jetzt meine Treibersoftware ohne Warnungen installieren - sie zeigt wie erwartet mein Unternehmen als Herausgeber an
Antwort geändert. Vielen Dank für den Hinweis auf das Offensichtliche (es ist ein paar Jahre her, seit ich die Toolchains installiert habe).