Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Nachdem die Testsignierung abgeschlossen ist und überprüft wurde, dass der Treiber bereit für die Freigabe ist, muss das Treiberpaket release-signiert werden. Es gibt zwei Möglichkeiten zur Release-Signierung eines Treiberpakets.
Die Release-Signierung identifiziert den Publisher von Binärdateien für den Kernel- oder Benutzermodus (z. B. .sys- oder .dll-Dateien), die in Windows veröffentlicht werden.
Binärdateien für den Kernel-Modus werden entweder durch eine Release-Signierung gekennzeichnet:
Windows Hardware Quality Lab (WHQL) zur Release-Signierung eines Treiberpakets. Eine WHQL-Release-Signatur wird über das Windows-Zertifizierungsprogramm abgerufen. Der Zertifizierungsprozess des Windows Hardware Compatibility Program beschreibt die fünf Schritte vom Anfang bis zum Abschluss des Windows-Zertifizierungsprogramms. Bei Fragen wenden Sie sich bitte an den technischen Support über das Partner Center Dashboard.
Anstatt das WHQL-Programm zu verwenden, kann ein Treiberpaket von den Entwickler*innen und Herstellern release-signiert werden. Eine Release-Signatur wird durch ein Software Publisher Zertifikat (SPC) erstellt. Das SPC wird von einer von Microsoft autorisierten Zertifizierungsstelle (CA) abgerufen. Signaturen, die mit dieser Art von SPC erstellt werden, entsprechen auch den Anforderungen für die Signierung von PnP-Treibern für Windows.
Im Folgenden finden Sie die Schritte, die für die Release-Signierung eines Treiberpakets für Methode 2 erforderlich sind:
Abrufen eines Software Publisher Zertifikats (SPC)
Für die Release-Signing-Methode benötigen Sie ein Zertifikat zur Code-Signierung, auch Software Publisher Certificate (SPC) genannt, von einer kommerziellen Zertifizierungsstelle.
Der Artikel Kreuzzertifikate für das Signieren von Code im Kernel-Modus enthält eine Liste der von Microsoft autorisierten kommerziellen Zertifizierungsstellen (CA). Die aufgeführten CA-Anbieter müssen ein Software Publisher Certificate (SPC) bereitstellen, um die Release-Signierung des Treiberpakets zu ermöglichen.
Folgen Sie den Anweisungen der Zertifizierungsstelle, um das SPC zu erwerben und den privaten Schlüssel auf dem signierenden Computer zu installieren. Das SPC ist ein urheberrechtlich geschütztes Instrument des Anbieters, der es für die Signierung seines Treiberpakets angefordert hat. Die SPC, der private Schlüssel und das Kennwort dürfen nicht an Personen außerhalb der Organisation des anfragenden Anbieters weitergegeben werden.
Kreuz-Zertifikate
Auszug aus Software Publisher Certificate:
Zusätzlich zum Abrufen eines SPC müssen Sie ein von Microsoft ausgestelltes Kreuzzertifikat abrufen. Das Kreuzzertifikat wird verwendet, um zu überprüfen, ob die CA, die eine SPC ausgestellt hat, eine vertrauenswürdige Root-Autorität ist. Ein Kreuzzertifikat ist ein von einer Zertifizierungsstelle ausgestelltes X.509-Zertifikat, das den öffentlichen Schlüssel für das Root-Zertifikat einer anderen Zertifizierungsstelle signiert. Kreuzzertifikate lassen eine einzige vertrauenswürdige Microsoft Root-Autorität zu, bieten aber auch die Möglichkeit, die Vertrauenskette auf kommerzielle Zertifizierungsstellen (CAs) zu erweitern, die SPCs ausstellen.
Publisher müssen ein Kreuzzertifikat nicht mit einem Treiber-Paket veröffentlichen. Das Kreuzzertifikat ist in der digitalen Signatur für die Katalogdatei eines Treiberpakets oder in der in eine Treiberdatei eingebetteten Signatur enthalten. Benutzer*innen, die das Treiberpaket installieren, müssen keine zusätzlichen Konfigurationsschritte durchführen, die durch die Verwendung von Kreuzzertifikaten verursacht werden.
Ausgewählte Auszüge aus Kreuzzertifikate für die Code-Signierung im Kernel-Modus:
Ein Kreuzzertifikat ist ein digitales Zertifikat, das von einer Zertifizierungsstelle (CA) ausgestellt wurde und zum Signieren des öffentlichen Schlüssels für das Root-Zertifikat einer anderen Zertifizierungsstelle verwendet wird. Kreuzzertifikate ermöglichen es, eine Vertrauenskette von einer einzigen, vertrauenswürdigen Root CA zu mehreren anderen CAs zu erstellen.
Folgendes gilt für Kreuzzertifikate in Windows:
- Sie bieten dem Kernel des Betriebssystems die Möglichkeit, eine einzige vertrauenswürdige Microsoft Root-Zertifizierungsstelle zu verwenden.
- Sie erweitern die Vertrauenskette auf mehrere kommerzielle Zertifizierungsstellen, die Software Publisher Certificates (SPCs) ausstellen, die für die Code-Signierung von Software zur Distribution, Installation und Ladung unter Windows verwendet werden.
Die hier bereitgestellten Kreuzzertifikate werden zusammen mit den Code-Signatur-Tools des Windows Driver Kit (WDK) verwendet, um Software im Kernel-Modus ordnungsgemäß zu signieren. Das digitale Signieren von Kernel-Mode-Software ist vergleichbar mit dem Code-Signieren jeder Software, die für Windows veröffentlicht wird. Die Entwickler*innen oder Publisher von Software fügen der digitalen Signatur Kreuzzertifikate hinzu, wenn sie die Kernel-Mode-Software signieren. Die Tools zur Code-Signierung fügen das Kreuzzertifikat zur digitalen Signatur der Binärdatei oder des Katalogs hinzu.
Auswählen des richtigen Kreuzzertifikats
Microsoft stellt für jede Zertifizierungsstelle, die SPCs für das Codersignieren von Code im Kernel-Modus ausstellt, ein spezielles Kreuzzertifikat bereit. Weitere Informationen über Kreuzzertifikate finden Sie unter Kreuzzertifikate für die Code-Signierung im Kernel-Modus. Dieser Artikel enthält die Namen der von Microsoft autorisierten Anbieter von Zertifizierungsstellen und das richtige Kreuzzertifikat für die Root-Autorität, die Ihre SPC ausgestellt hat. Suchen Sie das richtige Kreuzzertifikat für die SPC, das von Ihrem CA-Anbieter ausgestellt wurde, und laden Sie das Kreuzzertifikat auf den Signiercomputer herunter, den Sie für die Release-Signierung verwenden, und speichern Sie es in Ihrem Treiberverzeichnis. Geben Sie den absoluten Pfad zu diesem Zertifikat an, wenn Sie es in einem beliebigen Signierbefehl verwenden.
Installieren von SPC-Informationen im persönlichen Zertifikatsspeicher
Weitere Auszüge aus Software Publisher Certificate:
Um eine SPC zum Signieren eines Treibers in einer Weise zu verwenden, die der Richtlinie zum Signieren von Code im Kernel-Modus entspricht, müssen die Informationen des Zertifikats zunächst in einer Personal Information Exchange (.pfx) Datei enthalten sein. Die in der .pfx-Datei enthaltenen Informationen müssen dann dem persönlichen Zertifikatsspeicher des lokalen Computers hinzugefügt werden, der einen Treiber signiert.
Eine Zertifizierungsstelle kann eine .pfx-Datei ausstellen, die die erforderlichen Informationen über das Zertifikat enthält. Wenn dies der Fall ist, können Sie die .pfx-Datei dem persönlichen Zertifikatsspeicher hinzufügen, indem Sie die Anweisungen unter Installieren einer .pfx Datei im persönlichen Zertifikatsspeicher befolgen.
Eine Zertifizierungsstelle kann jedoch die folgenden Dateipaare ausstellen:
- Eine .pvk Datei, die die Informationen zum privaten Schlüssel enthält.
- Eine .spc oder .cer Datei, die die Informationen über den öffentlichen Schlüssel enthält.
In diesem Fall muss das Dateipaar (eine .pvk und eine .spc, oder eine .pvk und eine .cer) in eine .pfx Datei konvertiert werden, um die Zertifikatsinformationen in den Store für persönliche Zertifikate aufzunehmen.
Um eine .pfx-Datei aus dem von der Zertifizierungsstelle ausgestellten Dateipaar zu erstellen, folgen Sie diesen Anweisungen:
Um eine .pvk-Datei und eine .spc-Datei in eine .pfx-Datei zu konvertieren, verwenden Sie den folgenden Pvk2Pfx-Befehl an einer Eingabeaufforderung:
Pvk2Pfx -pvk mypvkfile.pvk -pi mypvkpassword -spc myspcfile.spc -pfx mypfxfile.pfx -po pfxpassword -f
Um eine .pvk-Datei und eine .cer-Datei in eine .pfx-Datei zu konvertieren, verwenden Sie den folgenden Pvk2Pfx-Befehl an einer Eingabeaufforderung:
Pvk2Pfx -pvk mypvkfile.pvk -pi mypvkpassword -spc mycerfile.cer -pfx mypfxfile.pfx -po pfxpassword -f
Im Folgenden werden die Parameter beschrieben, die in dem Befehl Pvk2Pfx verwendet werden:
- Der Parameter -pvkmypvkfile.pvk gibt eine .pvk Datei an.
- Die Option -pimypvkpassword gibt das Kennwort für die .pvk-Datei an.
- Der Parameter -spcmyspcfile.spc spezifiziert eine .spc Datei oder der Parameter -spcmycerfile.cer spezifiziert eine .cer Datei.
- Die Option -pfxmypfxfile.pfx gibt den Namen einer .pfx Datei an.
- Die Option -popfxpassword legt ein Kennwort für die .pfx Datei fest.
- Die Option -f konfiguriert Pvk2Pfx so, dass es eine vorhandene .pfx-Datei ersetzt, falls eine solche existiert.
Wichtig
Sie sollten Ihre .pvk- und .pfx-Dateien mit starken Kennwörtern schützen.
Installieren einer .pfx-Datei im persönlichen Zertifikatsspeicher
Um Treiber für den Kernel-Modus zu signieren, müssen die in der .pfx-Datei gespeicherten Zertifikate und Schlüssel in den lokalen persönlichen Zertifikatsspeicher importiert werden. Signtool unterstützt die Verwendung von .pfx-Dateien zum Signieren von Kernel-Mode-Treibern nicht. Diese Einschränkung ist auf einen Konflikt beim Hinzufügen von Kreuzzertifikaten in der Signatur bei der Verwendung eines Zertifikats aus einer .pfx-Datei zurückzuführen
Letzte Auszüge aus Software Publisher Certificate:
Nachdem Sie eine .pfx Datei von einer CA abgerufen oder eine .pfx Datei aus einer .pvk und entweder einer .spc oder einer .cer Datei erstellt haben, fügen Sie die Informationen in der .pfx Datei dem persönlichen Zertifikatsspeicher des lokalen Computers hinzu, der den Treiber signiert. Sie können den Assistenten für den Zertifikatsimport verwenden, um die Informationen in der Datei .pfx in den persönlichen Zertifikatsspeicher zu importieren, wie folgt:
- Um den Assistenten für den Zertifikatsimport zu öffnen, suchen Sie die Datei .pfx im Windows Explorer und doppelklicken Sie auf die Datei.
- Um das Code-signierende Zertifikat in den persönlichen Zertifikatsspeicher zu importieren, folgen Sie den Anweisungen des Assistenten für den Zertifikatsimport.
Auszug aus Importieren einer SPC in einen Zertifikatsspeicher:
Eine alternative Möglichkeit, die Datei .pfx in den lokalen persönlichen Zertifikatsspeicher zu importieren, ist das Kommandozeilenprogramm CertUtil. Das folgende Beispiel aus der Kommandozeile verwendet CertUtil, um die Datei abc.pfx in den persönlichen Zertifikatsspeicher zu importieren:
certutil -user -p pfxpassword -importPFX abc.pfx
Hierbei gilt:
- Die Option -user gibt den persönlichen Store „Current User“ an.
- Die Option -p gibt das Kennwort für die .pfx-Datei an (pfxpassword).
- Die Option -importPFX gibt den Namen der .pfx Datei an (abc.pfx).
SPC-Eigenschaften anzeigen
Verwenden Sie das MMC-Zertifikate-Snap-In (certmgr.msc), um die Zertifikate im persönlichen Zertifikatsspeicher anzuzeigen.
- Richten Sie das Snap-In Zertifikate, certmgr.msc, ein.
- Wählen Sie den Ordner Persönlicher Zertifikatsspeicher im linken Fensterbereich des Snap-Ins aus.
- Wählen Sie den Ordner Zertifikate und doppelklicken Sie auf das Zertifikat, das für die Release-Signierung verwendet werden soll.
- Wählen Sie Betreff aus der Liste der Felder, um den Betreffnamen des Zertifikats auf der Registerkarte Details des Dialogfelds Zertifikat zu markieren. Dieser Betreffname wird in den Beispielen in diesem Abschnitt mit dem Argument /n von Signtool verwendet.
signatur-
Basierend auf Release-Signierung der Katalogdatei eines Treiberpakets:
Führen Sie die folgenden Befehle aus, um die cat-Datei zu signieren, die das Treiberpaket signiert. Der Befehl /n sollte den in Anführungszeichen gesetzten Namen des Zertifikats verwenden, den Sie unter Subject in Schritt 4 oben sehen, also CN= MyCompany Inc.
signtool sign /v /ac MSCV-VSClass3.cer /s My /n "MyCompany Inc." /t http://timestamp.digicert.com toaster.cat
/ac Dateiname
Gibt eine Datei an, die ein weiteres Zertifikat enthält, das dem Signaturblock hinzugefügt werden soll. Bei dieser Datei handelt es sich um das Kreuzzertifikat MSCV-VSClass3.cer, das Sie über den Download-Link für Microsoft Kreuzzertifikate abrufen können. Verwenden Sie einen vollständigen Pfadnamen, wenn sich das Kreuzzertifikat nicht im aktuellen Verzeichnis befindet. Obwohl nicht erforderlich, ist es ratsam, das Kreuzzertifikat beim Signieren der cat-Datei hinzuzufügen.
/s SpeicherName
Gibt den beim Suchen des Zertifikats zu öffnenden Speicher an. Wenn diese Option nicht angegeben wird, wird der Store My geöffnet, der der persönliche Zertifikatsspeicher ist.
/n BetreffName
Gibt den Namen des Antragstellers des Signaturzertifikats an. Dieser Wert kann eine Teilzeichenfolge des gesamten Antragstellernamens sein.
/t URL
Gibt die URL des Zeitstempelservers an. Wenn diese Option nicht vorhanden ist, wird die signierte Datei nicht mit einem Zeitstempel versehen. Mit dem Zeitstempel bleibt das signierte Treiberpaket auf unbestimmte Zeit gültig, bis das SPC-Signaturzertifikat aus anderen Gründen widerrufen wird.
Sie müssen alle Signierschritte korrekt ausführen, sonst können Sie den Treiber nicht signieren. Möglicherweise erhalten Sie die folgenden Fehler.
SignTool Error: No certificates were found that met all the given criteria
Signieren einbetten
Basierend auf Release-Signierung eines Treibers durch eine eingebettete Signatur:
Die Richtlinie zum Signieren von Code im Kernel-Modus steuert, ob ein Treiber im Kernel-Modus geladen wird. 64-Bit-Versionen von Windows haben im Vergleich zu 32-Bit-Versionen von Windows strengere Anforderungen.
Ein Kernel-Modus-Boot-Start-Treiber muss über eine eingebettete Software Publisher Certificate (SPC)-Signatur verfügen. Diese Anforderung gilt für jeden PnP- oder Nicht-PnP-Bootstarter im Kernel-Modus. Gilt auch für die 32-Bit-Versionen von Windows. Ein PnP-Kernel-Mode-Treiber, der kein Boot-Start-Treiber ist, muss entweder eine eingebettete SPC-Signatur, eine Katalogdatei mit einer WHQL- Release-Signatur oder eine Katalogdatei mit einer SPC-Signatur haben.
Weitere Informationen finden Sie unter Anforderungen an das Signieren von Code im Kernel-Modus.
Befehl zum Einbetten der Signatur der Datei toaster.sys.
signtool sign /v /ac MSCV-VSClass3.cer /s my /n "MyCompany Inc. " /t http://timestamp.digicert.com toaster.sys
Nachdem die Signierung abgeschlossen ist, führen Sie den folgenden Befehl aus, um den signierten Treiber zu überprüfen.
signtool verify /kp /v /c tstamd64.cat toastpkg.inf
Befehlsausgabe:
Verifying: toaster.inf
File is signed in catalog: toaster.cat
Hash of file (sha1): 580C2A24C3A9E12817E18ADF1C4FE9CF31B01EA3
Signing Certificate Chain:
Issued to: VeriSign Class 3 Public Primary Certification Authority - G5
Issued by: VeriSign Class 3 Public Primary Certification Authority - G5
Expires: Wed Jul 16 15:59:59 2036
SHA1 hash: 4EB6D578499B1CCF5F581EAD56BE3D9B6744A5E5
Issued to: VeriSign Class 3 Code Signing 2010 CA
Issued by: VeriSign Class 3 Public Primary Certification Authority - G5
Expires: Fri Feb 07 15:59:59 2020
SHA1 hash: 495847A93187CFB8C71F840CB7B41497AD95C64F
Issued to: Contoso, Inc
Issued by: VeriSign Class 3 Code Signing 2010 CA
Expires: Thu Dec 04 15:59:59 2014
SHA1 hash: EFC77FA6BA295580C2A2CD25B56C00606CA21269
The signature is timestamped: Mon Jan 27 14:48:55 2014
Timestamp Verified by:
Issued to: Thawte Timestamping CA
Issued by: Thawte Timestamping CA
Expires: Thu Dec 31 15:59:59 2020
SHA1 hash: BE36A4562FB2EE05DBB3D32323ADF445084ED656
Issued to: Symantec Time Stamping Services CA - G2
Issued by: Thawte Timestamping CA
Expires: Wed Dec 30 15:59:59 2020
SHA1 hash: 6C07453FFDDA08B83707C09B82FB3D15F35336B1
Issued to: Symantec Time Stamping Services Signer - G4
Issued by: Symantec Time Stamping Services CA - G2
Expires: Tue Dec 29 15:59:59 2020
SHA1 hash: 65439929B67973EB192D6FF243E6767ADF0834E4
Cross Certificate Chain:
Issued to: Microsoft Code Verification Root
Issued by: Microsoft Code Verification Root
Expires: Sat Nov 01 05:54:03 2025
SHA1 hash: 8FBE4D070EF8AB1BCCAF2A9D5CCAE7282A2C66B3
Issued to: VeriSign Class 3 Public Primary Certification Authority - G5
Issued by: Microsoft Code Verification Root
Expires: Mon Feb 22 11:35:17 2021
SHA1 hash: 57534CCC33914C41F70E2CBB2103A1DB18817D8B
Issued to: VeriSign Class 3 Code Signing 2010 CA
Issued by: VeriSign Class 3 Public Primary Certification Authority - G5
Expires: Fri Feb 07 15:59:59 2020
SHA1 hash: 495847A93187CFB8C71F840CB7B41497AD95C64F
Issued to: Contoso, Inc
Issued by: VeriSign Class 3 Code Signing 2010 CA
Expires: Thu Dec 04 15:59:59 2014
SHA1 hash: EFC77FA6BA295580C2A2CD25B56C00606CA21269
Successfully verified: toaster.inf
Number of files successfully Verified: 1
Number of warnings: 0
Number of errors: 0
Beachten Sie das Vorhandensein von Microsoft Code Verification Root in der Zertifikatskette.
Prüfen Sie als nächstes die eingebettete Signierung der Datei toaster.sys.
signtool verify /v /kp toaster.sys
Befehlsausgabe:
Verifying: toaster.sys Hash of file (sha1): CCF5F5C02FEDE87D92FCB7B536DBF5D5EFDB7B41
Signing Certificate Chain:
Issued to: VeriSign Class 3 Public Primary Certification Authority - G5
Issued by: VeriSign Class 3 Public Primary Certification Authority - G5
Expires: Wed Jul 16 15:59:59 2036
SHA1 hash: 4EB6D578499B1CCF5F581EAD56BE3D9B6744A5E5
Issued to: VeriSign Class 3 Code Signing 2010 CA
Issued by: VeriSign Class 3 Public Primary Certification Authority - G5
Expires: Fri Feb 07 15:59:59 2020
SHA1 hash: 495847A93187CFB8C71F840CB7B41497AD95C64F
Issued to: Contoso, Inc
Issued by: VeriSign Class 3 Code Signing 2010 CA
Expires: Thu Dec 04 15:59:59 2014 SHA1 hash: EFC77FA6BA295580C2A2CD25B56C00606CA21269
The signature is timestamped: Mon Jan 27 14:48:55 2014 Timestamp Verified by:
Issued to: Thawte Timestamping CA Issued by: Thawte Timestamping CA Expires: Thu Dec 31 15:59:59 2020 SHA1 hash: BE36A4562FB2EE05DBB3D32323ADF445084ED656
Issued to: Symantec Time Stamping Services CA - G2 Issued by: Thawte Timestamping CA Expires: Wed Dec 30 15:59:59 2020 SHA1 hash: 6C07453FFDDA08B83707C09B82FB3D15F35336B1
Issued to: Symantec Time Stamping Services Signer - G4 Issued by: Symantec Time Stamping Services CA - G2 Expires: Tue Dec 29 15:59:59 2020 SHA1 hash: 65439929B67973EB192D6FF243E6767ADF0834E4
Cross Certificate Chain:
Issued to: Microsoft Code Verification Root Issued by: Microsoft Code Verification Root Expires: Sat Nov 01 05:54:03 2025 SHA1 hash: 8FBE4D070EF8AB1BCCAF2A9D5CCAE7282A2C66B3
Issued to: VeriSign Class 3 Public Primary Certification Authority - G5
Issued by: Microsoft Code Verification Root
Expires: Mon Feb 22 11:35:17 2021
SHA1 hash: 57534CCC33914C41F70E2CBB2103A1DB18817D8B
Issued to: VeriSign Class 3 Code Signing 2010 CA
Issued by: VeriSign Class 3 Public Primary Certification Authority - G5
Expires: Fri Feb 07 15:59:59 2020
SHA1 hash: 495847A93187CFB8C71F840CB7B41497AD95C64F
Issued to: Contoso, Inc Issued by: VeriSign Class 3 Code Signing 2010 CA Expires: Thu Dec 04 15:59:59 2014 SHA1 hash: EFC77FA6BA295580C2A2CD25B56C00606CA21269
Successfully verified: toaster.sys
Number of files successfully Verified: 1 Number of warnings: 0 Number of errors: 0
Beachten Sie auch hier das Vorhandensein von Microsoft Code Verification Root in der Zertifikatskette.