Signieren eines App-Pakets mit SignTool

SignTool ist ein Befehlszeilentool, das zum digitalen Signieren eines App-Pakets oder -Bündels mit einem Zertifikat verwendet wird. Das Zertifikat kann entweder vom Benutzer (zu Testzwecken) oder von einem Unternehmen (für die Verteilung) erstellt werden. Durch das Signieren eines App-Pakets erhält der Benutzer die Überprüfung, dass die Daten der App nach dem Signieren nicht geändert wurden, während gleichzeitig die Identität des Benutzers oder Unternehmens bestätigt wird, der sie signiert hat. SignTool kann verschlüsselte oder unverschlüsselte App-Pakete und -Bündel signieren.

Wichtig

Wenn Sie Visual Studio zum Entwickeln Ihrer App verwendet haben, empfiehlt es sich, das App-Paket mithilfe des Visual Studio-Assistenten zu erstellen und zu signieren. Weitere Informationen finden Sie unter Eine UWP-App mit Visual Studio verpacken und Eine Desktop-App vom Quellcode aus mit Visual Studio verpacken.

Weitere Informationen zu Codesignatur und Zertifikaten im Allgemeinen finden Sie in der Einführung in die Codesignatur.

Voraussetzungen

  • Eine verpackte 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 Paketsignierung.

  • SignTool.exe
    Basierend auf Ihrem Installationspfad des SDK befindet sich SignTool 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 vieles mehr. Zum Signieren eines App-Pakets konzentrieren wir uns auf den Signierbefehl . Vollständige Informationen zu SignTool finden Sie auf der SignTool-Referenzseite .

Ermitteln des Hashalgorithmus

Wenn Sie SignTool zum Signieren Ihres App-Pakets oder -Bündels verwenden, muss der in SignTool verwendete Hashalgorithmus derselbe Algorithmus sein, mit dem Sie Ihre App verpacken. Wenn Sie beispielsweise 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 von MakeAppx.exe verwendet wird.

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

<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 (in MakeAppx.exe nicht 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 sie ermittelt haben, welcher Hashalgorithmus zum Verpacken Ihrer App verwendet wurde, können Sie sie signieren.

Die allgemeine Befehlszeilensyntax für signTool-Paketsignierung lautet:

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 /a signTool das beste Zertifikat automatisch 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 <Namens des Zertifikats> 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 kein Kennwort aufweist, lassen Sie "/p <Ihr Kennwort>" aus den Beispielbefehlen aus.

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