Come creare un certificato di firma del pacchetto di un'app

Importante

MakeCert.exe è deprecato. Per indicazioni correnti sulla creazione di un certificato, vedere Creare un certificato per la firma del pacchetto.

 

Informazioni su come usare MakeCert.exe e Pvk2Pfx.exe per creare un certificato di firma del codice di test, in modo da poter firmare i pacchetti delle app di Windows.

È necessario firmare digitalmente le app di Windows in pacchetto prima di distribuirle. Se non si usa Microsoft Visual Studio 2012 per creare e firmare i pacchetti dell'app, è necessario creare e gestire i certificati di firma del codice personalizzati. È possibile creare certificati usando MakeCert.exe e Pvk2Pfx.exe da Windows Driver Kit (WDK). È quindi possibile usare i certificati per firmare i pacchetti dell'app, in modo che possano essere distribuiti in locale per i test.

Informazioni importanti

Tecnologie

Prerequisiti

Istruzioni

Passaggio 1: Determinare il nome dell'editore del pacchetto

Per rendere utilizzabile il certificato di firma con il pacchetto dell'app che vuoi firmare, il nome soggetto del certificato di firma deve corrispondere all'attributo Publisher dell'elemento Identity nel AppxManifest.xml per tale app. Si supponga, ad esempio, che il AppxManifest.xml contenga:

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

Per il parametro publisherName specificato con l'utilità MakeCert nel passaggio successivo, usare "CN=Contoso Software, O=Contoso Corporation, C=US".

Nota

Questa stringa di parametro viene specificata tra virgolette e fa distinzione tra maiuscole e minuscole e spazi vuoti.

 

La stringa dell'attributo Publisher definita per l'elemento Identity nel AppxManifest.xml deve essere identica alla stringa specificata con il parametro MakeCert /n per il nome soggetto del certificato. Copiare e incollare la stringa laddove possibile.

Passaggio 2: Creare una chiave privata usando MakeCert.exe

Usare l'utilità MakeCert per creare un certificato di test autofirmato e una chiave privata:

MakeCert /n publisherName /r /h 0 /eku "1.3.6.1.5.5.7.3.3,1.3.6.1.4.1.311.10.3.13" /e 
expirationDate /sv MyKey.pvk MyKey.cer

Questo comando richiede di specificare una password per il file con estensione pvk. È consigliabile scegliere una password complessa e mantenere la chiave privata in una posizione sicura.

È consigliabile usare i parametri suggeriti nell'esempio precedente per questi motivi:

/R

Crea un certificato radice autofirmato. Ciò semplifica la gestione per il certificato di test.

/h 0

Contrassegna il vincolo di base per il certificato come entità finale. Ciò impedisce l'uso del certificato come autorità di certificazione (CA) in grado di rilasciare altri certificati.

/Eku

Imposta i valori EKU (Enhanced Key Usage) per il certificato.

Nota

Non inserire uno spazio tra i due valori delimitati da virgole.

 

  • 1.3.6.1.5.5.7.3.3 indica che il certificato è valido per la firma del codice. Specificare sempre questo valore per limitare l'uso previsto per il certificato.
  • 1.3.6.1.4.1.311.10.3.13 indica che il certificato rispetta la firma della durata. In genere, se una firma viene contrassegnata come timestamp, purché il certificato sia valido nel momento in cui è stato timestampato, la firma rimane valida anche se il certificato scade. Questa EKU forza la scadenza della firma indipendentemente dal fatto che la firma sia contrassegnata come timestamp.

/e

Imposta la data di scadenza del certificato. Specificare un valore per il parametro expirationDate nel formato mm/gg/a. È consigliabile scegliere una data di scadenza solo se necessario a scopo di test, in genere inferiore a un anno. Questa data di scadenza in combinazione con l'EKU per la firma della durata può contribuire a limitare la finestra in cui il certificato può essere compromesso e usato in modo improprio.

Per altre informazioni sulle altre opzioni, vedi MakeCert.

Passaggio 3: Creare un file con estensione pfx (Personal Information Exchange) usando Pvk2Pfx.exe

Usare l'utilità Pvk2Pfx per convertire i file con estensione pvk e .cer creati da MakeCert in un file pfx che è possibile usare con SignTool per firmare un pacchetto dell'app:

Pvk2Pfx /pvk MyKey.pvk /pi pvkPassword /spc MyKey.cer /pfx MyKey.pfx [/po pfxPassword]

I file MyKey.pvk e MyKey.cer sono gli stessi file MakeCert.exe creati nel passaggio precedente. Usando il parametro facoltativo /po, è possibile specificare una password diversa per il file pfx risultante; in caso contrario, il file pfx ha la stessa password di MyKey.pvk.

Per altre info su altre opzioni, vedi Pvk2Pfx.

Osservazioni:

Dopo aver creato il file pfx, è possibile usare il file con SignTool per firmare un pacchetto dell'app. Per altre info, vedi Come firmare un pacchetto dell'app con SignTool. Tuttavia, il certificato non è ancora considerato attendibile dal computer locale per la distribuzione dei pacchetti dell'app fino a quando non viene installato nell'archivio certificati attendibili del computer locale. È possibile usare Certutil.exe, incluso in Windows.

Per installare i certificati con WindowsCertutil.exe

  1. Eseguire Cmd.exe come amministratore.

  2. Eseguire questo comando:

    Certutil -addStore TrustedPeople MyKey.cer
    

È consigliabile rimuovere i certificati se non sono più in uso. Dal prompt dei comandi dell'amministratore eseguire questo comando:

Certutil -delStore TrustedPeople certID

certID è il numero di serie del certificato. Eseguire questo comando per determinare il numero di serie del certificato:

Certutil -store TrustedPeople

Security Considerations

Aggiungendo un certificato agli archivi certificati del computer locale, si influisce sull'attendibilità del certificato di tutti gli utenti nel computer. È consigliabile installare tutti i certificati di firma del codice desiderati per testare i pacchetti dell'app nell'archivio certificati trusted Persone. Rimuovere tempestivamente tali certificati quando non sono più necessari, per evitare che vengano usati per compromettere l'attendibilità del sistema.

Esempi

Esempio di creazione del pacchetto dell'app

Concetti

Procedure consigliate per la firma del codice

Come firmare un pacchetto dell'app con SignTool

Firma di un pacchetto di app