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 fornisce all'utente la verifica che i dati dell'app non siano stati modificati dopo la firma, confermando anche l'identità dell'utente o dell'azienda che l'ha firmata. SignTool può firmare pacchetti e bundle di app crittografati o non crittografati.

Importante

Se visual Studio è stato usato per sviluppare l'app, è consigliabile usare la procedura guidata di 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 di app, vedere Creare un pacchetto di app con lo strumento MakeAppx.exe.

  • 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 del pacchetto.

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

    • x86: C:\Programmi (x86)\Windows Kits\10\bin\sdk version>\<x86\SignTool.exe
    • x64: C:\Programmi (x86)\Windows Kits\10\bin\<sdk version>\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 concentreremo sul comando di firma . 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 algoritmo usato per creare il pacchetto dell'app. Ad esempio, se hai usato MakeAppx.exe per creare il pacchetto dell'app con le impostazioni predefinite, devi specificare SHA256 quando usi SignTool perché questo è 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. 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 ottenuto tutti i prerequisiti e aver determinato quale algoritmo hash è stato 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 pfx o essere installato in un archivio certificati.

Per firmare il pacchetto dell'app con un certificato da un file 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 /a consente a SignTool di scegliere automaticamente il certificato migliore.

Se il certificato non è un file 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 questa sintassi:

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, sei pronto per caricare il pacchetto nello Store. Per altre indicazioni sul caricamento e l'invio di app allo Store, vedi Invii di app.