Condividi tramite


Firma di un pacchetto di app (app di Windows Store)

Per impostazione predefinita, tutti i pacchetti delle applicazioni generati da Visual Studio sono firmati con un certificato di test. Quando crei un pacchetto, Visual Studio genera una cartella che include il pacchetto firmato stesso. Il file di certificato (con estensione cer) contenuto in questa cartella contiene la chiave pubblica utilizzata per firmare il pacchetto. Questa chiave deve essere installata nel computer prima dell'installazione del pacchetto dell'applicazione.

Generazione di un certificato di test

Il file di certificato (con estensione pfx) viene generato e aggiunto al tuo progetto al momento della creazione del progetto.

Il campo Subject del certificato viene impostato sull'attributo Publisher dell'elemento Identity del file manifesto di origine (.appxmanifest).

  • Se crei un pacchetto locale, il valore predefinito dell'attributo Publisher è il tuo nome utente.

  • Se crei un pacchetto per Windows Store o associ l'app a esso, l'attributo Publisher viene impostato su Publisher ID che ottieni dal tuo account sviluppatore in Store quando accedi per creare il pacchetto.

Il processo di creazione del certificato aggiunge una proprietà al file di progetto:

<PackageCertificateKeyFile> RisingStar_TemporaryKey.pfx </PackageCertificateKeyFile>

Il valore di PackageCertificateKeyFile è il percorso relativo o il percorso completo del certificato di origine stesso.

Se il certificato è mancante, viene creato alla compilazione del pacchetto dal menu Store, ma non quando il pacchetto viene compilato dal prompt dei comandi. Quando Visual Studio crea un certificato, vengono impostati i valori delle seguenti proprietà:

  • Il valore dell'estensione Limitazioni di base è impostato su Subject Type=End Entity.

    Nota

    L'estensione delle limitazioni di base identifica se l'oggetto del certificato è un'autorità di certificazione (CA). Questa estensione definisce anche la profondità massima dei percorsi di certificazione validi che includono questo certificato. La proprietà Limitazioni di base specifica se la chiave pubblica certificata può verificare le firme del certificato.

  • Il valore dell'estensione Enhanced Key Usage (EKU) è impostato su Code Signing.

I certificati hanno validità di un anno dopo dalla data di creazione. Per informazioni su come rinnovare un certificato, vedi Rinnovo di un certificato.

Suggerimento

Se un errore simile a "Il certificato specificato non è valido poiché scaduto o perché è presente un altro problema" viene visualizzato durante il processo di firma, utilizza la finestra di progettazione del manifesto per creare un certificato di test che sostituisca il precedente.

Convalida dei certificati

Durante la creazione del pacchetto, Visual Studio convalida il certificato specificato nei modi seguenti:

  • Verifica la presenza dell'estensione Limitazioni di base e il relativo valore, che deve essere Subject Type=End Entity o non specificato.

  • Verifica il valore della proprietà Utilizzo chiavi avanzato che deve contenere Firma codice e può contenere Firma definitiva. Tutti gli altri EKU non sono consentiti.

  • Verifica il valore della proprietà KeyUsage (KU) che deve essere Unset o DigitalSignature.

  • Verifica l'esistenza di una chiave privata.

  • Viene verificato se il certificato è attivo, non è scaduto e non è stato revocato.

In alcuni scenari, puoi avere bisogno di un controllo più stretto su quale certificato viene utilizzato e, pertanto, su quali controlli di convalida vengono eseguiti sul certificato. La proprietà EnableSigningChecks di MSBuild controlla quali dei controlli sui certificati precedenti vengono eseguiti. Se imposti la proprietà su True (impostazione predefinita), Visual Studio esegue tutti i controlli. Se imposti la proprietà su False, Visual Studio esegue solo le attività seguenti:

  • Viene verificata l'esistenza di una chiave privata.

  • Verifica se il valore della proprietà Enhanced Key Usage contiene Code Signing.

  • Viene verificato se il certificato è attivo, non è scaduto e non è stato revocato.

Nota

Quando EnableSignignChecks è impostato su False, lo script di PowerShell potrebbe non funzionare poiché il certificato personalizzato potrebbe non essere conforme a tutte le regole necessarie affinché lo script installi il pacchetto dell'applicazione. Per ulteriori informazioni, vedi Condivisione locale di un pacchetto di app (app di Windows Store).

Scelta di un certificato alternativo

In Visual Studio, viene creato automaticamente un certificato quando viene creato il progetto, tuttavia, puoi crearne uno tuo personale o utilizzarne uno esistente per firmare il pacchetto.

Per creare o utilizzare un certificato alternativo

  1. In Esplora soluzioni, apri il menu di scelta rapida per il file .appxmanifest, scegli Apri con, quindi scegli Progettazione manifesto applicazione.

  2. In Progettazione manifesto applicazione scegli la scheda Pacchetto, quindi fai clic sul pulsante Scegli certificato.

  3. Nella finestra di dialogo Scegli certificato espandi l'elenco Configura certificato, quindi scegli una delle opzioni seguenti:

    • Seleziona da archivio certificati
      Seleziona uno dei tuoi certificati Personal dall'archivio certificati nel sistema operativo.

    • Seleziona da file
      Seleziona un file di certificato esistente dal file system.

    • Crea certificato di test
      Crea un certificato con un Publisher ID di tua scelta. Puoi inoltre creare una password.

Qualsiasi opzione tu scelga determina l'aggiunta di un file di certificato al progetto e il conseguente aggiornamento delle proprietà PackageCertificateKeyFile e PackageCertificateThumbprint del progetto.

Nota

Se un errore simile a "Il certificato specificato non è valido poiché scaduto o perché è presente un altro problema" viene visualizzato durante il processo di firma, utilizza la finestra di progettazione del manifesto per creare un certificato personalizzato che sostituisca il precedente.

Rinnovo di un certificato

Il certificato predefinito generato da Visual Studio ha una validità di un anno dalla data di creazione. Prima che il certificato scada, devi rinnovarne la validità tramite Progettazione manifesto applicazione oppure ottenere un altro certificato valido secondo la modalità descritta nella procedura precedente.

Per rinnovare il certificato

  1. In Esplora soluzioni, apri il menu di scelta rapida per il file .appxmanifest, scegli Apri con, quindi scegli Progettazione manifesto applicazione.

  2. In Progettazione manifesto applicazione scegli la scheda Pacchetto, quindi fai clic sul pulsante Scegli certificato.

  3. Nella finestra di dialogo Scegli certificato espandi l'elenco Configura certificato, quindi scegli Crea certificato di prova.

  4. Nella finestra di dialogo Crea certificato di prova fai clic su OK.

    In Visual Studio il certificato verrà rigenerato con una nuova data di scadenza.

Eliminazione o esportazione di un certificato

Puoi eliminare o esportare un certificato scaduto o compromesso, danneggiato o sostituito da un altro certificato. Per informazioni su come eliminare o esportare un certificato, vedi Come utilizzare la console Certificati.

Modifica delle app installate

Se i file in un pacchetto installato vengono modificati, la verifica della firma potrebbe impedire l'avvio dell'app. Per modificare un pacchetto, apporta le modifiche nei file originali utilizzando una licenza per sviluppatori, quindi ridistribuisci il pacchetto modificato. Per ulteriori informazioni sulle licenze per sviluppatori, vedi Ottenere una licenza per sviluppatori (app di Windows Store).

Vedere anche

Concetti

Override di un manifesto del pacchetto (app di Windows Store)

Creazione del pacchetto dell'app di Windows Store tramite Visual Studio 2012