Condividi tramite


Creare un certificato per la firma del pacchetto

Questo articolo illustra come creare e considerare attendibile un certificato per la firma del pacchetto dell'app usando gli strumenti di PowerShell (per gli strumenti CMD, vedere qui). È consigliabile usare Visual Studio per creare pacchetti di app UWP e creare pacchetti di app desktop, ma è comunque possibile creare manualmente il pacchetto di un'app se non si usa Visual Studio per sviluppare l'app.

Prerequisiti

  • Un'app in pacchetto o non in pacchetto
    Un'app contenente un file AppxManifest.xml. Dovrai fare riferimento al file manifesto durante la creazione del certificato che verrà usato per firmare il pacchetto finale dell'app. Per informazioni dettagliate su come creare manualmente un pacchetto di un'app, vedi Creare un pacchetto di app con lo strumento MakeAppx.exe.

  • Cmdlet dell'Infrastruttura a Chiave Pubblica (PKI)
    Sono necessari cmdlet PKI per creare ed esportare il certificato di firma. Per altre informazioni, vedere Cmdlet dell'infrastruttura a chiave pubblica.

Creare un certificato autofirmato

Un certificato autofirmato è utile per testare l'app prima di essere pronti per pubblicarlo nello Store. Seguire i passaggi descritti in questa sezione per creare un certificato autofirmato.

Annotazioni

Quando si crea e si usa un certificato autofirmato, solo gli utenti che installano e considerano attendibile il certificato possono eseguire l'applicazione. Questa operazione è facile da implementare per i test, ma potrebbe impedire ad altri utenti di installare l'applicazione. Quando si è pronti per pubblicare l'applicazione, è consigliabile usare un certificato rilasciato da un'origine attendibile. Questo sistema di attendibilità centralizzata consente di garantire che l'ecosistema di applicazioni abbia livelli di verifica per proteggere gli utenti da attori malintenzionati.

Determinare l'oggetto dell'app in pacchetto

Per usare un certificato per firmare il pacchetto dell'app, il "Soggetto" nel certificato deve corrispondere alla sezione "Publisher" nel manifesto dell'app.

Ad esempio, la sezione "Identity" nel file di AppxManifest.xml dell'app dovrebbe essere simile alla seguente:

  <Identity Name="Contoso.AssetTracker" 
    Version="1.0.0.0" 
    Publisher="CN=Contoso Software, O=Contoso Corporation, C=US"/>

Il "Publisher", in questo caso, è "CN=Contoso Software, O=Contoso Corporation, C=US" che deve essere utilizzato per la creazione del tuo certificato.

Usare New-SelfSignedCertificate per creare un certificato

Usare il cmdlet Di PowerShell New-SelfSignedCertificate per creare un certificato autofirmato. New-SelfSignedCertificate include diversi parametri per la personalizzazione, ma ai fini di questo articolo ci concentreremo sulla creazione di un certificato semplice che funzionerà con SignTool. Per altri esempi e usi di questo cmdlet, vedere New-SelfSignedCertificate.

In base al file AppxManifest.xml dell'esempio precedente, è consigliabile usare la sintassi seguente per creare un certificato. In un prompt di PowerShell con privilegi elevati:

New-SelfSignedCertificate -Type Custom -KeyUsage DigitalSignature -CertStoreLocation "Cert:\CurrentUser\My" -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.3", "2.5.29.19={text}") -Subject "CN=Contoso Software, O=Contoso Corporation, C=US" -FriendlyName "Your friendly name goes here"

Si notino i dettagli seguenti su alcuni parametri:

  • KeyUsage: questo parametro definisce per quale può essere usato il certificato. Per un certificato autofirmato, questo parametro deve essere impostato su DigitalSignature.

  • TextExtension: questo parametro include le impostazioni per le estensioni seguenti:

    • Utilizzo chiavi esteso (EKU): questa estensione indica scopi aggiuntivi per i quali può essere usata la chiave pubblica certificata. Per un certificato autofirmato, questo parametro deve includere la stringa di estensione "2.5.29.37={text}1.3.6.1.5.5.7.3.3", che indica che il certificato deve essere usato per la firma del codice.

    • Vincoli di base: questa estensione serve a indicare se il certificato è un'autorità di certificazione (CA). Per un certificato di autofirma, questo parametro deve includere la stringa di estensione "2.5.29.19={text}", che indica che il certificato è un'entità finale (non una CA).

Dopo aver eseguito questo comando, il certificato verrà creato e aggiunto all'archivio certificati User Personal. Il risultato del comando produrrà anche l'impronta digitale del certificato.

È possibile visualizzare il certificato in una finestra di PowerShell usando i comandi seguenti:

Set-Location Cert:\CurrentUser\My
Get-ChildItem | Format-Table Subject, FriendlyName, Thumbprint

Verranno visualizzati tutti i certificati nell'archivio certificati Utente personale.

Per installare un'app firmata con questo certificato, il certificato deve essere importato nell'archivio certificati Persone attendibili del computer locale.

Esportare il certificato in un file PFX

Per importare il certificato appena creato nell'archivio certificati Persone attendibili del computer locale, è necessario esportarlo in un file PFX (Personal Information Exchange) usando il cmdlet Export-PfxCertificate .

Quando si usa Export-PfxCertificate, è necessario creare e usare una password oppure usare il parametro "-ProtectTo" per specificare quali utenti o gruppi possono accedere al file senza password. Si noti che verrà visualizzato un errore se non si usa il parametro "-Password" o "-ProtectTo". "-Password" è consigliato per l'utilizzo generale, mentre "-ProtectTo" è utile quando l'account utente è supportato da un controller di dominio.

Utilizzo delle password

$password = ConvertTo-SecureString -String <Your Password> -Force -AsPlainText 
Export-PfxCertificate -cert "Cert:\CurrentUser\My\<Certificate Thumbprint>" -FilePath <FilePath>.pfx -Password $password

ProtectTo usage

Export-PfxCertificate -cert Cert:\CurrentUser\My\<Certificate Thumbprint> -FilePath <FilePath>.pfx -ProtectTo <Username or group name>

Importare il certificato nell'archivio Persone attendibili del computer locale

Dopo aver esportato il certificato in un file PFX, è possibile importarlo nell'archivio Persone attendibili del computer locale usando il cmdlet Import-PfxCertificate da una sessione di PowerShell amministratore.

Import-PfxCertificate -CertStoreLocation "Cert:\LocalMachine\TrustedPeople" -Password $password -FilePath <FilePath>.pfx

Ora che il certificato è attendibile, è possibile firmare il pacchetto dell'app con SignTool. Per il passaggio successivo del processo di creazione manuale dei pacchetti, vedere Firmare un pacchetto dell'app con SignTool.

Considerazioni sulla sicurezza

Aggiungendo un certificato a archivi certificati del computer locale, si influisce sull'attendibilità del certificato di tutti gli utenti nel computer. È consigliabile rimuovere tali certificati quando non sono più necessari per impedire che vengano usati per compromettere l'attendibilità del sistema.