Signieren eines App-Pakets mit SignTool

SignTool ist ein Befehlszeilentool zum digitalen Signieren eines App-Pakets oder -Pakets mit einem Zertifikat. Das Zertifikat kann entweder vom Benutzer (zu Testzwecken) oder von einem Unternehmen (zur Verteilung) erstellt werden. Durch das Signieren eines App-Pakets kann der Benutzer überprüfen, ob die Daten der App nach der Signierung nicht geändert wurden. Gleichzeitig wird die Identität des Benutzers oder Unternehmens bestätigt, der bzw. das es signiert hat. SignTool kann verschlüsselte oder unverschlüsselte App-Pakete und -Pakete signieren.

Wichtig

Wenn Sie Visual Studio app verwendet haben, empfiehlt es sich, das App-Paket mit dem Visual Studio-Assistenten zu erstellen und zu signieren. Weitere Informationen finden Sie unter Packen einer UWP-App mit Visual Studio und Packen einer Desktop-App aus Quellcode mit Visual Studio.

Weitere Informationen zum Signieren von Code und Zertifikaten im Allgemeinen finden Sie unter Einführung in die Codesignatur.

Voraussetzungen

  • Eine gepackte App
    Weitere Informationen zum manuellen Erstellen eines App-Pakets finden Sie unter Erstellen eines App-Pakets mit dem MakeAppx.exe Tool.

  • Ein gültiges Signaturzertifikat
    Weitere Informationen zum Erstellen oder Importieren eines gültigen Signaturzertifikats finden Sie unter Erstellen oder Importieren eines Zertifikats für die Paketsignatur.

  • SignTool.exe
    Basierend auf Ihrem Installationspfad des SDK befindet sich SignTool hier auf Ihrem Windows 10 PC:

    • x86: C:\Programme (x86)\Windows Kits\10\bin\<sdk version>\x86\SignTool.exe
    • x64: C:\Programme (x86)\Windows Kits\10\bin\<sdk version>\x64\SignTool.exe

Verwenden von SignTool

SignTool kann verwendet werden, um Dateien zu signieren, Signaturen oder Zeitstempel zu überprüfen, Signaturen zu entfernen und mehr. Zum Signieren eines App-Pakets konzentrieren wir uns auf den Befehl sign . Vollständige Informationen zu SignTool finden Sie auf der Referenzseite zu SignTool .

Bestimmen des Hashalgorithmus

Wenn Sie SignTool zum Signieren Ihres App-Pakets oder -Pakets verwenden, muss der in SignTool verwendete Hashalgorithmus derselbe Algorithmus sein, den Sie zum Packen Ihrer App verwendet haben. Wenn Sie z. B. MakeAppx.exe zum Erstellen Ihres App-Pakets mit den Standardeinstellungen verwendet haben, müssen Sie sha256 angeben, wenn Sie SignTool verwenden, da dies der Standardalgorithmus ist, der vonMakeAppx.exe.

Um herauszufinden, welcher Hashalgorithmus beim Packen Ihrer App verwendet wurde, extrahieren Sie den Inhalt des App-Pakets, und überprüfen Sie die AppxBlockMap.xml Datei. Informationen zum Entpacken/Extrahieren eines App-Pakets finden Sie unter Extrahieren von Dateien aus einem Paket oder Paket. Die Hashmethode befindet sich im BlockMap-Element und hat dieses Format:

<BlockMap xmlns="http://schemas.microsoft.com/appx/2010/blockmap"
HashMethod="http://www.w3.org/2001/04/xmlenc#sha256">

In dieser Tabelle sind die einzelnen HashMethod-Werte und der entsprechende Hashalgorithmus aufgeführt:

HashMethod-Wert Hashalgorithmus
http://www.w3.org/2001/04/xmlenc#sha256 SHA256
http://www.w3.org/2001/04/xmldsig-more#sha384 SHA384
http://www.w3.org/2001/04/xmlenc#sha512 SHA512

Hinweis

Da der Standardalgorithmus von SignTool SHA1 ist (inMakeAppx.exenicht verfügbar ), müssen Sie bei Verwendung von SignTool immer einen Hashalgorithmus angeben.

Signieren des App-Pakets

Nachdem Sie alle Voraussetzungen erfüllt haben und ermittelt haben, welcher Hashalgorithmus zum Packen Ihrer App verwendet wurde, können Sie sie signieren.

Die allgemeine Befehlszeilensyntax für SignTool-Paketsignaturen ist:

SignTool sign [options] <filename(s)>

Das Zertifikat, das zum Signieren Ihrer App verwendet wird, muss entweder eine PFX-Datei sein oder in einem Zertifikatspeicher installiert sein.

Verwenden Sie die folgende Syntax, um Ihr App-Paket mit einem Zertifikat aus einer PFX-Datei zu signieren:

SignTool sign /fd <Hash Algorithm> /a /f <Path to Certificate>.pfx /p <Your Password> <File path>.appx
SignTool sign /fd <Hash Algorithm> /a /f <Path to Certificate>.pfx /p <Your Password> <File path>.msix

Beachten Sie, dass /aSignTool mit der Option automatisch das beste Zertifikat auswählen kann.

Wenn Ihr Zertifikat keine PFX-Datei ist, verwenden Sie die folgende Syntax:

SignTool sign /fd <Hash Algorithm> /n <Name of Certificate> <File Path>.appx
SignTool sign /fd <Hash Algorithm> /n <Name of Certificate> <File Path>.msix

Alternativ können Sie den SHA1-Hash des gewünschten Zertifikats <anstelle des Zertifikatnamens> mithilfe dieser Syntax angeben:

SignTool sign /fd <Hash Algorithm> /sha1 <SHA1 hash> <File Path>.appx
SignTool sign /fd <Hash Algorithm> /sha1 <SHA1 hash> <File Path>.msix

Weitere Beispiele finden Sie unter Verwenden von SignTool zum Signieren einer Datei.

Beachten Sie, dass einige Zertifikate kein Kennwort verwenden. Wenn Ihr Zertifikat nicht über ein Kennwort verfügt, sollten Sie "/p <Ihr Kennwort>" in den Beispielbefehlen weglassen.

Nachdem Ihr App-Paket mit einem gültigen Zertifikat signiert wurde, können Sie das Paket in die Store. Weitere Anleitungen zum Hochladen und Übermitteln von Apps an die Store Sie unter App-Übermittlungen.