Condividi tramite


Come creare un certificato di firma del pacchetto dell'app

Importante

MakeCert.exe è obsoleto. 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.

Cosa è necessario sapere

Tecnologie

Prerequisiti

Disposizioni

Passaggio 1: Determinare il nome dell'editore del pacchetto

Per rendere utilizzabile il certificato di firma con il pacchetto dell'app che si vuole firmare, il nome soggetto del certificato di firma deve corrispondere all'attributo Publisher dell'elementoIdentitynell'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àMakeCertnel 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àMakeCertper 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 valida per tutta la 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 dalla presenza di un timestamp sulla firma.

/e

Imposta la data di scadenza del certificato. Specificare un valore per il parametro expirationDate nel formato mm/gg/aa. È 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 a lungo termine, può contribuire a limitare la finestra in cui il certificato può essere compromesso e abusato.

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àPvk2Pfxper convertire i file con estensione pvk e .cer creati 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, .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 informazioni, vedere 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, fornito con 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

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

Certutil -store TrustedPeople

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 installare tutti i certificati di firma del codice desiderati per testare i pacchetti dell'app nell'archivio certificati Persone attendibili. Rimuovere tempestivamente tali certificati quando non sono più necessari, per evitare che vengano usati per compromettere l'attendibilità del sistema.

esempi di

Creare un pacchetto di app di esempio

Concetti

Code-Signing procedure consigliate

Come firmare un pacchetto dell'app con SignTool

Firma di un pacchetto app