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 anche 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 hai usato Visual Studio per sviluppare l'app, è consigliabile usare la procedura guidata Visual Studio per creare e firmare il pacchetto dell'app. Per altre informazioni, vedere 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'appcon lo MakeAppx.exe.

  • Un certificato di firma valido
    Per altre informazioni sulla creazione o sull'importazione di un certificato di firma valido, vedere Creare o importare un certificato per la firma del pacchetto.

  • 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, 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 un 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 file. 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 il formato seguente:

<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 il relativo 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 MakeAppx.exe), è necessario specificare sempre un algoritmo hash quando si usa SignTool.

Firmare il pacchetto dell'app

Dopo aver stabilito tutti i prerequisiti e aver determinato l'algoritmo hash usato per creare il pacchetto dell'app, è possibile firmarlo.

La sintassi della riga di comando generale per la firma del pacchetto SignTool è:

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 /a l'opzione consente 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 < > Password" dai comandi di esempio.

Dopo aver firmato il pacchetto dell'app con un certificato valido, si è pronti per caricare il pacchetto in Store. Per altre indicazioni sul caricamento e l'invio di app in Store, vedere Invii di app.