Firmare il pacchetto di un'app tramite SignTool

SignTool è uno strumento da riga di comando usato per firmare digitalmente un pacchetto dell'app o un bundle con un certificato. Il certificato può essere creato dall'utente (a scopo di test) o rilasciato da una società (per la distribuzione). La firma di un pacchetto dell'app consente all'utente di verificare che i dati dell'app non siano stati modificati dopo la firma, confermando al tempo stesso l'identità dell'utente o della società che l'ha firmata. SignTool può firmare pacchetti e bundle di app crittografati o non crittografati.

Importante

Se è stato Visual Studio per sviluppare l'app, è consigliabile usare la procedura guidata Visual Studio per creare e firmare il pacchetto dell'app. Per altre informazioni, vedi Creare un pacchetto di un'app UWP con Visual Studio e Creare un pacchetto di un'app desktop dal codice sorgente usando Visual Studio.

Per altre informazioni sulla firma del codice e sui certificati in generale, vedere Introduzione alla firma del codice.

Prerequisiti

  • Un'app in pacchetto
    Per altre informazioni sulla creazione manuale di un pacchetto dell'app, vedere Creare un pacchetto dell'app con lo MakeAppx.exe app.

  • Un certificato di firma valido
    Per altre informazioni sulla creazione o l'importazione di un certificato di firma valido, vedere Creare o importare un certificato per la firma dei pacchetti.

  • SignTool.exe
    In base al percorso di installazione dell'SDK, SignTool si trova nel PC Windows 10:

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

Uso di SignTool

SignTool può essere usato per firmare file, verificare firme o timestamp, rimuovere firme e altro ancora. Ai fini della firma di un pacchetto dell'app, ci si concentrerà sul comando sign . Per informazioni complete su SignTool, vedere la pagina di riferimento di SignTool .

Determinare l'algoritmo hash

Quando si usa SignTool per firmare il pacchetto o il bundle dell'app, l'algoritmo hash usato in SignTool deve essere lo stesso usato per creare il pacchetto dell'app. Ad esempio, se è stato usato MakeAppx.exe per creare il pacchetto dell'app con le impostazioni predefinite, è necessario specificare SHA256 quando si usa SignTool perché è l'algoritmo predefinito usato da MakeAppx.exe.

Per scoprire quale algoritmo hash è stato usato durante la creazione del pacchetto dell'app, estrarre il contenuto del pacchetto dell'app ed esaminare il file AppxBlockMap.xml pacchetto. Per informazioni su come decomprimere/estrarre un pacchetto dell'app, vedere Estrarre file da un pacchetto o un bundle. Il metodo hash si trova nell'elemento BlockMap e ha questo formato:

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

Questa tabella mostra ogni valore HashMethod e l'algoritmo hash corrispondente:

Valore HashMethod Algoritmo hash
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

Nota

Poiché l'algoritmo predefinito di SignTool è SHA1 (non disponibile in MakeAppx.exe), è sempre necessario specificare un algoritmo hash quando si usa SignTool.

Firmare il pacchetto dell'app

Dopo aver stabilito quale algoritmo hash è stato usato per creare il pacchetto dell'app, è possibile firmarlo.

La sintassi della riga di comando generale per la firma dei pacchetti SignTool è la seguente:

SignTool sign [options] <filename(s)>

Il certificato usato per firmare l'app deve essere un file con estensione pfx o essere installato in un archivio certificati.

Per firmare il pacchetto dell'app con un certificato da un file con estensione pfx, usare la sintassi seguente:

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

Si noti che l'opzione /aconsente a SignTool di scegliere automaticamente il certificato migliore.

Se il certificato non è un file con estensione pfx, usare la sintassi seguente:

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

In alternativa, è possibile specificare l'hash SHA1 del certificato desiderato anziché <Il nome del certificato usando> la sintassi seguente:

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

Per altri esempi, vedere Uso di SignTool per firmare un file

Si noti che alcuni certificati non usano una password. Se il certificato non ha una password, omettere "/p <Your Password>" dai comandi di esempio.

Dopo aver firmato il pacchetto dell'app con un certificato valido, è possibile caricarlo in Store. Per altre informazioni sul caricamento e l'invio di app in Store, vedere Invii di app.