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.