使用 SignTool 簽署應用程式套件

SignTool 是用來以數位方式簽署應用程式套件或搭配憑證的命令行工具。 憑證可由使用者建立(用於測試目的),或由公司發行(用於散發)。 簽署應用程式套件可讓使用者驗證應用程式的數據在簽署之後尚未修改,同時確認已簽署之使用者或公司的身分識別。 SignTool 可以簽署加密或未加密的應用程式套件和套件組合。

重要

如果您使用 Visual Studio 來開發應用程式,建議您使用 Visual Studio 精靈來建立和簽署應用程式套件。 如需詳細資訊,請參閱使用 Visual Studio 封裝 UWP 應用程式,以及使用 Visual Studio 從原始程式碼封裝傳統型應用程式。

如需程式代碼簽署和憑證的詳細資訊,請參閱 程式代碼簽署簡介。

必要條件

  • 已封裝的應用程式
    若要深入瞭解如何手動建立應用程式套件,請參閱 使用MakeAppx.exe工具建立應用程式套件。

  • 有效的簽署憑證
    如需建立或匯入有效簽署憑證的詳細資訊,請參閱 建立或匯入套件簽署的憑證。

  • SignTool.exe
    根據 SDK 的安裝路徑,這是 SignTool 位於 Windows 10 計算機上的位置

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

使用 SignTool

SignTool 可用來簽署檔案、驗證簽章或時間戳、移除簽章等等。 為了簽署應用程式套件,我們將著重於 sign 命令。 如需 SignTool 的完整資訊,請參閱 SignTool 參考頁面。

判斷哈希演算法

使用 SignTool 簽署應用程式套件或套件組合時,SignTool 中使用的哈希演算法必須與您用來封裝應用程式的演算法相同。 例如,如果您使用MakeAppx.exe建立具有預設設定的應用程式套件,則必須在使用SignTool時指定SHA256,因為這是MakeAppx.exe使用的預設演算法。

若要找出封裝應用程式時所使用的哈希演算法,請擷取應用程式套件的內容,並檢查 AppxBlockMap.xml 檔案。 若要瞭解如何解除封裝/擷取應用程式套件,請參閱 從套件或套件組合擷取檔案。 哈希方法位於 BlockMap 元素中,且具有下列格式:

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

下表顯示每個 HashMethod 值及其對應的哈希演算法:

HashMethod 值 哈希演算法
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

注意

由於 SignTool 的預設演算法是 SHA1(無法在 MakeAppx.exe 中使用),因此在使用 SignTool,您必須一律指定哈希演算法。

簽署應用程式套件

一旦您擁有所有必要條件,並判斷用來封裝應用程式的哈希演算法之後,您就可以進行簽署。

SignTool 套件簽署的一般命令行語法為:

SignTool sign [options] <filename(s)>

用來簽署應用程式的憑證必須是 .pfx 檔案,或安裝在證書存儲中。

若要使用 .pfx 檔案中的憑證簽署您的應用程式套件,請使用下列語法:

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

請注意, /a 此選項可讓 SignTool 自動選擇最佳憑證。

如果您的憑證不是 .pfx 檔案,請使用下列語法:

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

或者,您可以使用下列語法來指定所需憑證的SHA1哈希,而不是 <使用下列語法的憑證> 名稱:

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

如需更多範例,請參閱 使用 SignTool 簽署檔案

請注意,某些憑證不會使用密碼。 如果您的憑證沒有密碼,請省略範例命令中的 「/p <您的密碼>」。

使用有效的憑證簽署應用程式套件之後,您就可以將套件上傳至市集。 如需上傳和提交應用程式至市集的詳細資訊指引,請參閱 應用程式提交