Signieren eines Treibers für seine Veröffentlichung
Bevor Sie ein Treiberpaket für die Öffentlichkeit freigeben, empfehlen wir, das Paket zur Zertifizierung zu übermitteln. Weitere Informationen finden Sie unter Windows-Hardwarezertifizierung und [Hardware-Dashboarddienste](../dashboard/index.md. Um ein Treiberpaket zur Zertifizierung zu übermitteln, müssen Sie das Paket mit einem Zertifikat signieren, das Sie von einer vertrauenswürdigen Zertifizierungsstelle wie VeriSign erhalten haben. Weitere Informationen finden Sie unter Abrufen eines VeriSign-Zertifikats. Sie benötigen außerdem ein Kreuzzertifikat, das von Microsoft bereitgestellt wird.
Angenommen, Sie haben zwei Dateien von VeriSign erhalten: eine private Schlüsseldatei (Private Key File, PVK) und ein Softwareherausgeberzertifikat (Software Publisher Certificate, SPC). Angenommen, es gibt eine Microsoft Visual Studio-Projektmappe mit einem Treiberprojekt mit dem Namen „MyDriver“ und einem Treiberpaketprojekt mit dem Namen „MyDriver Package“. Führen Sie die folgenden Schritte aus, um das Treiberpaket zu signieren.
Verwenden Sie das Tool Pvk2Pfx, um ein Personal Information Exchange (PFX)-Zertifikat zu erstellen. Das Tool Pvk2Pfx verwendet Ihre PVK- und SPC-Dateien als Eingabe und erstellt eine einzelne PFX-Datei. Gehen Sie für diese Übung davon aus, dass Ihre PFX-Datei den Namen „MyCert.pfx“ hat.
Hinweis Nachdem Sie Ihre PFX-Datei erstellt haben, können Sie sie für andere Treiberprojekte und auf anderen Treiberentwicklungscomputern wiederverwenden.
Informationen dazu, welches Kreuzzertifikat Sie benötigen, finden Sie unter Zertifikatübergreifendes Signieren von Kernelmodus-Codesignaturen. Stellen Sie sicher, dass sich das erforderliche Kreuzzertifikat in $(BASEDIR)\CrossCertificates befindet, wobei $(BASEDIR) das Basisverzeichnis der Windows-Kits ist (z. B. c:\Program Files (x86)\Windows Kits\8.0\CrossCertificates). Wenn das erforderliche Kreuzzertifikat hier nicht vorhanden ist, laden Sie das Kreuzzertifikat von Microsoft herunter und kopieren es in $(BASEDIR)\CrossCertificates.
Öffnen Sie in Visual Studio die Projektmappe mit den Projekten „MyDriver“ und „MyDriver-Paket“. Wenn das Fenster „Projektmappen-Explorer“ nicht bereits geöffnet ist, wählen Sie Projektmappen-Explorer im Menü Ansicht aus. Wähen Sie im Fenster „Projektmappen-Explorer“ das Paketprojekt MyDriver Package aus, und halten Sie es gedrückt (oder klicken Sie mit der rechten Maustaste darauf). Wählen Sie dann Eigenschaften aus.
Navigieren Sie auf den Eigenschaftsseiten für das Paket zu Konfigurationseigenschaften > Treibersignierung > Allgemein. Wählen Sie in der Dropdownliste Signiermodus die Option Produktionssignierung aus. Führen Sie in Produktionszertifikat eine der folgenden Aktionen aus:
Geben Sie den Pfad zu Ihrem Signaturzertifikat ein (z. B. c:\Certs\MyCert.pfx).
Wählen Sie Aus Datei auswählen aus, und navigieren Sie zu Ihrem Signaturzertifikat.
Wählen Sie Aus Store auswählen und dann ein Zertifikat aus, das Sie zuvor in einen Zertifikatspeicher importiert haben.
Hinweis Um ein Zertifikat in einen Store zu importieren, wählen Sie die Zertifikatdatei aus und halten sie gedrückt (oder klicken mit der rechten Maustaste darauf). Wählen Sie dann PFX installieren aus. Folgen Sie den Anweisungen im Zertifikatimport-Assistenten.
Hinweis Wenn Sie zu einem späteren Zeitpunkt ein anderes Zertifikat verwenden möchten, stellen Sie sicher, dass das neue Zertifikat in den Zertifikatspeicher importiert wird. Wenn Sie Aus Datei auswählen und zu Ihrem neuen Zertifikat navigieren, wird das neue Zertifikat automatisch in den Zertifikatspeicher importiert. Wenn Sie den Pfad zu Ihrem neuen Zertifikat jedoch manuell eingeben, wird es nicht automatisch in den Zertifikatspeicher importiert. In diesem Fall müssen Sie die neue Zertifikatdatei auswählen und gedrückt halten (oder mit der rechten Maustaste darauf klicken) und PFX installieren auswählen.
Wählen Sie auf der Eigenschaftenseite Treibersignierung > Allgemein für TimeStampServer einen der Zeitstempelserver in der Dropdownliste aus.
Hinweis Wenn Sie einen der Zeitstempelserver in der Dropdownliste verwenden, muss beim Erstellen des Treiberpakets eine Verbindung mit dem Internet vorhanden sein. Wenn Sie beim Erstellen des Treiberpakets die Verbindung mit dem Internet trennen müssen, löschen Sie die Eingaben im Feld TimeStampServer.
Navigieren Sie auf den Eigenschaftsseiten für das Paket zu Konfigurationseigenschaften > Inf2Cat > Allgemein. Wählen Sie in der Dropdown-Liste Run Inf2Cat die Option Yes.
Schließen Sie die Eigenschaftenseiten für das Paket.
Wählen Sie das Treiberprojekt MyDriver aus, und halten Sie es gedrückt (oder klicken Sie mit der rechten Maustaste darauf). Wählen Sie dann Eigenschaften aus.
Navigieren Sie auf den Eigenschaftsseiten für den Treiber zu Konfigurationseigenschaften > Treibersignierung > Allgemein. Legen Sie TimeStampServer auf denselben Wert fest, den Sie in den Treiberpaketeigenschaften verwendet haben. Legen Sie Signiermodus auf Produktionssignierung fest. Legen Sie Produktionszertifikat auf denselben Wert fest, den Sie in den Treiberpaketeigenschaften verwendet haben.
Wenn Sie zur Erstellung des Treiberpakets bereit sind, drücken Sie F5. Visual Studio signiert das Paket und die Treiberdatei automatisch. Wenn Sie die Bereitstellung konfiguriert haben, stellt Visual Studio Ihr signiertes Treiberpaket außerdem auf einem Testcomputer bereit. Weitere Informationen finden Sie unter Bereitstellen eines Computers für die Treiberbereitstellung und -prüfung (WDK 8.1).
Anzeigen der Treiberpaketdateien
Nachdem Sie Ihre Lösung erstellt haben, navigieren Sie im Datei-Explorer zu dem Ordner, der Ihr Treiberpaket enthält. Eine der Dateien im Paket ist eine Katalogdatei. Die Katalogdatei enthält die digitale Signatur für das Paket. Ein Beispiel für die Anzeige der Dateien in einem signierten Paket finden Sie unter Schreiben eines KMDF-Treibers basierend auf einer Vorlage.
Abrufen einer WHQL-Freigabesignatur
Wenn Ihr Treiberpaket die Zertifizierungstests bestanden hat, kann es von Windows Hardware Quality Labs (WHQL) signiert werden. Wenn Ihr Treiberpaket von WHQL signiert ist, kann es über das Windows Update-Programm oder andere von Microsoft unterstützte Verteilungsmechanismen verteilt werden.
Zum Installieren unter Windows 10, 8.1, 8 und 7 kann Ihr Treiberpaket über eine einzelne SHA1-Signatur verfügen.
Ab Windows 10 müssen Sie im Windows Hardware Developer Center-Dashboardportal auch neue Windows 10-Kernelmodustreiber zur digitalen Signierung übermitteln. Sowohl Kernel- als auch Benutzermodustreiber-Übermittlungen müssen über ein gültiges Extended Validation (EV)-Codesignaturzertifikat verfügen.
** Hinweis ** SHA1-Veralterung gilt nicht für Treiber.
Signieren eines Pakets im Vergleich zum Signieren einer einzelnen Treiberdatei
Ein Treiberpaket enthält mehrere Dateien. In der Regel enthält ein Treiberpaket eine oder mehrere Treiberdateien, eine Informationsdatei (INF-Datei) und eine Katalogdatei. Die Katalogdatei enthält Informationen zu den anderen Dateien im Paket. Wenn Sie die Katalogdatei signieren, dient die Signatur der Katalogdatei als Signatur für das gesamte Treiberpaket. Anders ausgedrückt, entspricht das Signieren der Katalogdatei dem Signieren des Treiberpakets.
In den meisten Fällen reicht es aus, das Treiberpaket zu signieren, und es ist nicht erforderlich, einzelne Treiberdateien zu signieren. Manchmal müssen Sie jedoch sowohl das Paket als auch die einzelnen Treiberdateien signieren. Bootstart-Treiberdateien müssen beispielsweise einzeln signiert werden. Das Signieren einer einzelnen Treiberdatei wird als Einbetten einer Signatur in die Treiberdatei bezeichnet.
Angenommen, es gibt eine Microsoft Visual Studio-Projektmappe mit einem Treiberprojekt mit dem Namen „MyDriver“ und einem Treiberpaketprojekt mit dem Namen „MyDriver Package“. Visual Studio stellt zwei Gruppen von Eigenschaftenseiten bereit: eine für „MyDriver“ und eine für „MyDriver Package“. Um das Treiberpaket zu signieren, legen Sie die Eigenschaften für die Treibersignierung für „MyDriver Package“ fest. Um eine Signatur in die einzelne Treiberdatei einzubetten, legen Sie die Eigenschaften für die Treibersignierung für „MyDriver“ fest.
Wenn Sie die Treiberpaketeigenschaften für die Produktionssignierung festlegen, müssen Sie die Signierungseigenschaften der einzelnen Treiberdateien entsprechend anpassen. Deaktivieren Sie entweder die Signierung für die einzelnen Treiberdateien, oder legen Sie die einzelnen Treiberdateien auf die Verwendung desselben Zertifikats fest, das Sie für das Paket angegeben haben.
Hinweis Um den Hash (auch als Fingerabdruck bezeichnet) eines Zertifikats anzuzeigen, öffnen Sie ein Eingabeaufforderungsfenster und navigieren zu dem Verzeichnis, das Ihr Zertifikat enthält. Geben Sie den Befehl certutil -dump CertName.pfx ein, wobei CertName.pfx der Name Ihres Zertifikats ist.
Verwandte Themen
- Änderungen für die Treibersignierung in Windows 10
- Verfügbarkeit der SHA-2-Codesignierungsunterstützung für Windows 7 und Windows Server 2008 R2
- Treibersignierung
- Windows-Hardwarezertifizierung
- Hardwaredashboard-Dienste
- Anforderungen für die Treibersignierung für Windows
- Zertifikatübergreifendes Signieren von Kernelmodus-Codesignaturen
- Exemplarische Vorgehensweise: Kernelmoduscode-Signierung
- Treibersignierung
- Installieren eines Bootstart-Treibers
- Tools für die Treibersignierung