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

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:

  1. Fassen Sie die zu signierenden Binardateien in einem einzigen Verzeichnis zusammen. In diesem Beispiel verwenden wir C:\\Echo.

  2. Öffnen Sie ein Eingabeaufforderungsfenster als Administrator.

  3. 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).
    
  4. 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
    
  5. 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
    
  6. 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

  1. 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

  1. Wechseln Sie zum Partner Center-Hardwaredashboard, und melden Sie sich mit Ihren Anmeldeinformationen an.

  2. Wählen Sie Neue Hardware übermitteln.

    Screenshot der Liste der gesendeten Hardware.

  3. 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.

  4. Lassen Sie beide Optionen für die Test-Signierung deaktiviert.

  5. Wählen Sie unter Angeforderte Signaturen aus, welche Signaturen Sie in Ihr Treiberpaket aufnehmen möchten.

    Ein Screenshot mit den Optionen zum Senden des Echo-Treibers zum Signieren.

  6. Gehen Sie auf der Seite nach unten und wählen Sie Senden.

  7. 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.

  1. Nachdem Sie die Übermittlungsdatei heruntergeladen haben, extrahieren Sie die Treiberdatei.

  2. Öffnen Sie ein Eingabeaufforderungsfenster als Administrator.

  3. Geben Sie den folgenden Befehl ein, um zu überprüfen, ob der Treiber wie erwartet signiert wurde.

    C:\Echo> SignTool verify Echo.Sys
    
  4. 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
    
  5. Um die EKUs des Treibers zu prüfen, führen Sie die folgenden Schritte aus.

    1. Ö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.

    2. Wählen Sie auf der Registerkarte Digitale Signaturen das aufgelistete Element in der Signatur-Liste.

    3. Wählen Sie Details und dann Zertifikat anzeigen.

    4. 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.

  1. Ö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
    
  2. 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:

  1. Erstellen Sie für jeden Treiber ein Unterverzeichnis.

    Ein Diagramm mit einem Beispiel für eine Verzeichnisstruktur zum Signieren von Treibern.

  2. 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