Windows-Treiber mit Zertifikat signieren
Dieser Artikel beschreibt, wie Sie einen Treiber mit einem Zertifikat signieren. Ausführliche Informationen und Anforderungen für das Signieren von Zertifikaten finden Sie unter Windows 10 mit Zertifikaten signierte Treiber.
Wichtig
Ab dem 1. März 2023 werden durch Zertifikate signierte Treiber, die sich an die Einzelhandel-Zielgruppe richten, nicht mehr auf Windows Update veröffentlicht. Durch Zertifikate signierte Treiber für Testszenarien werden weiterhin unterstützt, wenn Sie die Optionen CoDev oder Test Registry Key / Surface SSRK wählen.
Voraussetzungen
Lesen und verstehen Sie die Anforderungen für Windows 10 mit Zertifikat signierte Treiber.
Registrieren Sie sich für das Hardware-Entwicklerprogramm. Wenn Sie noch nicht registriert sind, folgen Sie den Schritten in Wie Sie sich für das Microsoft Windows Hardware-Entwicklerprogramm registrieren.
Sie müssen über ein Extended-Validation (EV)- Codesignaturzertifikat verfügen. Überprüfen Sie, ob Ihr Unternehmen bereits über ein Code-Signatur-Zertifikat verfügt. Sorgen Sie dafür, dass das Zertifikat verfügbar ist, falls dies der Fall ist. Wenn Ihre Organisation nicht über ein Zertifikat verfügt, müssen Sie ein EV-Zertifikat erwerben.
Folgen Sie dem in Download Kits und Tools für Windows 10 beschriebenen Prozess, um das Windows Driver Kit (WDK) herunterzuladen und zu installieren.
(Optional) Laden Sie das Echo-Treiberbeispiel herunter, das in diesem Artikel verwendet wird.
Erstellen Sie die CAB-Datei
In diesem Abschnitt gehen wir Schritt für Schritt vor, wie Sie eine Übermittlung von CAB-Dateien erstellen. Wir verwenden das Echo-Treiberbeispiel, um den Prozess zu veranschaulichen.
Eine typische CAB-Datei-Übermittlung muss Folgendes enthalten:
Den Treiber selbst, zum Beispiel Echo.sys
Die INF-Datei des Treibers, die vom Dashboard verwendet wird, um den Signierungsprozess zu erleichtern.
Die Symboldatei, die für Debugging-Informationen verwendet wird. Zum Beispiel: Echo.pdb. Die PDB-Datei wird für die automatischen Tools von Microsoft zur Absturzanalyse benötigt.
Katalogdateien (CAT) sind erforderlich und werden nur zur Überprüfung des Unternehmens verwendet. Microsoft generiert Katalogdateien neu und ersetzt alle Katalogdateien, die gesendet wurden.
Hinweis
Jeder Treiberordner in Ihrer CAB-Datei muss die gleiche Anzahl von Architekturen unterstützen. Zum Beispiel müssen sie x86, x64 oder alle sowohl x86 als auch x64 unterstützen.
Verwenden Sie keine UNC-Dateifreigabenpfade, wenn Sie auf die Speicherorte Ihrer Treiber verweisen (\\\server\share
). Sie müssen einen zugeordneten Laufwerksbuchstaben verwenden, damit die CAB-Datei gültig ist.
So erstellen Sie die CAB-Datei:
Fassen Sie die zu signierenden Binardateien in einem einzigen Verzeichnis zusammen. In diesem Beispiel verwenden wir
C:\\Echo
.Öffnen Sie ein Eingabeaufforderungsfenster als Administrator.
Geben Sie
MakeCab /?
ein, um die MakeCab-Optionen anzuzeigen:C:\Echo> MakeCab /? Cabinet Maker - Lossless Data Compression Tool MAKECAB [/V[n]] [/D var=value ...] [/L dir] source [destination] MAKECAB [/V[n]] [/D var=value ...] /F directive_file [...] source File to compress. destination File name to give compressed file. If omitted, the last character of the source file name is replaced with an underscore (_) and used as the destination. /F directives A file with MakeCAB directives (may be repeated). Refer to Microsoft Cabinet SDK for information on directive_file. /D var=value Defines variable with specified value. /L dir Location to place destination (default is current directory). /V[n] Verbosity level (1..3).
Bereiten Sie eine CAB-DDF-Eingabedatei vor. Für unseren Echo-Treiber könnte sie etwa so aussehen:
;*** Echo.ddf example ; .OPTION EXPLICIT ; Generate errors .Set CabinetFileCountThreshold=0 .Set FolderFileCountThreshold=0 .Set FolderSizeThreshold=0 .Set MaxCabinetSize=0 .Set MaxDiskFileCount=0 .Set MaxDiskSize=0 .Set CompressionType=MSZIP .Set Cabinet=on .Set Compress=on ;Specify file name for new cab file .Set CabinetNameTemplate=Echo.cab ; Specify the subdirectory for the files. ; Your cab file should not have files at the root level, ; and each driver package must be in a separate subfolder. .Set DestinationDir=Echo ;Specify files to be included in cab file C:\Echo\Echo.Inf C:\Echo\Echo.Sys
Geben Sie den folgenden Befehl ein, um die CAB-Datei zu erstellen.
C:\Echo> MakeCab /f "C:\Echo\Echo.ddf
Die Ausgabe von MakeCab sollte die Anzahl der Dateien in der erstellten CAB-Datei auf dem Bildschirm anzeigen. In diesem Fall sollten es zwei Dateien sein.
C:\Echo> MakeCab /f Echo.ddf Cabinet Maker - Lossless Data Compression Tool 17,682 bytes in 2 files Total files: 2 Bytes before: 17,682 Bytes after: 7,374 After/Before: 41.70% compression Time: 0.20 seconds ( 0 hr 0 min 0.20 sec) Throughput: 86.77 Kb/second
Suchen Sie die CAB-Datei im Unterverzeichnis
Disk1
. Sie können die CAB-Datei im Datei-Explorer auswählen, um zu überprüfen, ob sie die erwarteten Dateien enthält.
Signieren der CAB-Datei mit Ihrem EV-Zertifikat
Um die CAB-Datei mit Ihrem EV-Zertifikat zu signieren, verwenden Sie das vom Anbieter des EV-Zertifikats empfohlene Verfahren. Um Ihre CAB-Datei beispielsweise mit einem SHA256-Zertifikat/Digest-Algorithmus/Zeitstempel zu signieren, geben Sie den folgenden Befehl ein:
C:\Echo> SignTool sign /s MY /n "Company Name" /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td sha256 /v "C:\Echo\Disk1\Echo.cab"
Wichtig
Denken Sie daran, die bewährten Verfahren der Branche zu verwenden, um die Sicherheit des EV-Code-Signing-Prozesses zu gewährleisten.
Senden der EV-signierten CAB-Datei über das Partner Center
Wechseln Sie zum Partner Center-Hardwaredashboard, und melden Sie sich mit Ihren Anmeldeinformationen an.
Wählen Sie Neue Hardware übermitteln.
Geben Sie im Abschnitt Pakete und Signierungseigenschaften einen Produktnamen für Ihre Treiberübermittlung ein. Dieser Name kann für die Suche und Organisation Ihrer Treiberübermittlung verwendet werden.
Hinweis
Wenn Sie Ihren Treiber für ein anderes Unternehmen freigeben, wird dieses diesen Namen sehen.
Lassen Sie beide Optionen für die Test-Signierung deaktiviert.
Wählen Sie unter Angeforderte Signaturen aus, welche Signaturen Sie in Ihr Treiberpaket aufnehmen möchten.
Gehen Sie auf der Seite nach unten und wählen Sie Senden.
Wenn der Signiervorgang abgeschlossen ist, laden Sie Ihren signierten Treiber vom Hardware-Dashboard herunter.
Überprüfen Sie, ob der Treiber ordnungsgemäß signiert wurde
Führen Sie die folgenden Schritte aus, um sicherzustellen, dass der Treiber ordnungsgemäß signiert wurde.
Nachdem Sie die Übermittlungsdatei heruntergeladen haben, extrahieren Sie die Treiberdatei.
Öffnen Sie ein Eingabeaufforderungsfenster als Administrator.
Geben Sie den folgenden Befehl ein, um zu überprüfen, ob der Treiber wie erwartet signiert wurde.
C:\Echo> SignTool verify Echo.Sys
Um zusätzliche Informationen aufzulisten und SignTool alle Signaturen in einer Datei mit mehreren Signaturen überprüfen zu lassen, geben Sie den folgenden Befehl ein:
C:\Echo> SignTool verify /pa /ph /v /d Echo.Sys
Um die EKUs des Treibers zu prüfen, führen Sie die folgenden Schritte aus.
Öffnen Sie den Windows-Explorer und suchen Sie die Binärdatei. Wählen und halten Sie die Datei (oder klicken Sie mit der rechten Maustaste) und wählen Sie Eigenschaften.
Wählen Sie auf der Registerkarte Digitale Signaturen das aufgelistete Element in der Signatur-Liste.
Wählen Sie Details und dann Zertifikat anzeigen.
Auf der Registerkarte Details wählen Sie Erweiterte Schlüsselverwendung.
Wenn der Treiber vom Dashboard abgelehnt wird, wird der folgende Prozess verwendet:
- Es wird eine eingebettete Microsoft SHA2-Signatur angehängt.
- Wenn die Binardateien des Treibers eingebettet und vom Kunden mit seinen eigenen Zertifikaten signiert sind, werden diese Signaturen nicht überschrieben.
- Erstellen und signieren Sie eine neue Katalogdatei mit einem SHA2-Zertifikat von Microsoft. Dieser Katalog ersetzt alle vorhandenen, vom Kunden bereitgestellten Kataloge.
Testen Ihres Treibers unter Windows
Befolgen Sie die folgenden Anweisungen, um den Beispieltreiber zu installieren.
Öffnen Sie ein Eingabeaufforderungsfenster als Administrator. Gehen Sie zu Ihrem Paket-Ordner für den Treiber und geben Sie den folgenden Befehl ein.
C:\Echo> devcon install echo.inf root\ECHO
Vergewissern Sie sich, dass bei der Installation des Treibers nicht der Bildschirm „Windows kann den Publisher dieser Treibersoftware nicht verifizieren.“ erscheint. Windows-Sicherheitsdialogfeld.
Erstellen einer Übermittlung mit mehreren Treibern
Um mehrere Treiber gleichzeitig zu senden:
Erstellen Sie für jeden Treiber ein Unterverzeichnis.
Bereiten Sie eine CAB-Datei DDF-Eingabedatei vor, die auf die Unterverzeichnisse verweist. Diese Ausgabe sieht ungefähr so aus:
;*** Submission.ddf multiple driver example ; .OPTION EXPLICIT ; Generate errors .Set CabinetFileCountThreshold=0 .Set FolderFileCountThreshold=0 .Set FolderSizeThreshold=0 .Set MaxCabinetSize=0 .Set MaxDiskFileCount=0 .Set MaxDiskSize=0 .Set CompressionType=MSZIP .Set Cabinet=on .Set Compress=on ;Specify file name for new cab file .Set CabinetNameTemplate=Echo.cab ;Specify files to be included in cab file ; First Driver .Set DestinationDir=DriverPackage1 C:\DriverFiles\DriverPackage1\Driver1.sys C:\DriverFiles\DriverPackage1\Driver1.inf ; Second driver .Set DestinationDir=DriverPackage2 C:\DriverFiles\DriverPackage2\Driver2.sys C:\DriverFiles\DriverPackage2\Driver2.inf