Condividi tramite


Introduzione ai certificati

Questo articolo illustra l'uso dei certificati nelle app WinUI. I certificati digitali vengono usati nella crittografia a chiave pubblica per associare una chiave pubblica a una persona, un computer o un'organizzazione. Le identità associate vengono usate più spesso per autenticare un'entità in un'altra. Ad esempio, i certificati vengono spesso usati per autenticare un server Web a un utente e a un utente in un server Web. È possibile creare richieste di certificato e installare o importare i certificati rilasciati. È anche possibile registrare un certificato in una gerarchia di certificati.

Archivi certificati condivisi

Le app WinUI usano il nuovo modello di applicazione isolationist introdotto in Windows 8. In questo modello le app vengono eseguite in un costrutto di sistema operativo di basso livello, denominato contenitore di app, che impedisce all'app di accedere a risorse o file all'esterno di se stesso, a meno che non sia consentito esplicitamente. Le sezioni seguenti descrivono le implicazioni relative all'infrastruttura a chiave pubblica (PKI).

Archiviazione certificati per contenitore di app

I certificati destinati all'uso in un specifico contenitore di app vengono archiviati in posizioni separate per utente e per contenitore di app. Un'app in esecuzione in un contenitore di app ha accesso in scrittura solo alla propria archiviazione dei certificati. Se l'applicazione aggiunge certificati a uno dei relativi archivi, questi certificati non possono essere letti da altre app. Se un'app viene disinstallata, vengono rimossi anche i certificati specifici. Un'app ha anche accesso in lettura agli archivi di certificati della macchina locale diversi dall'archivio MY e REQUEST.

Cache

Ogni contenitore di app ha una cache isolata in cui può archiviare i certificati dell'autorità emittente necessari per la convalida, gli elenchi di revoche di certificati (CRL) e le risposte OCSP (Online Certificate Status Protocol).

Certificati e chiavi condivisi

Quando una smart card viene inserita in un lettore, i certificati e le chiavi contenuti nella scheda vengono propagati all'archivio PERSONALE dell'utente in cui possono essere condivisi da qualsiasi applicazione con attendibilità totale in esecuzione. Per impostazione predefinita, tuttavia, i contenitori di app non hanno accesso all'archivio MY per utente.

Per risolvere questo problema e consentire ai gruppi di entità di accedere ai gruppi di risorse, il modello di isolamento del contenitore di app supporta il concetto di funzionalità. Una funzionalità consente a un processo del contenitore di app di accedere a una risorsa specifica. La funzionalità di sharedUserCertificates concede a un contenitore di app l'accesso in lettura ai certificati e alle chiavi contenuti nell'archivio MY dell'utente e nell'archivio delle radici attendibili delle smart card. La funzionalità non concede l'accesso in lettura all'archivio RICHIESTE utente.

Specificare la funzionalità sharedUserCertificates nel manifesto, come illustrato nell'esempio seguente.

<Capabilities>
    <Capability Name="sharedUserCertificates" />
</Capabilities>

Campi certificato

Lo standard X.509 public key certificate è stato rivisto nel tempo. Ogni versione successiva della struttura dei dati ha conservato i campi esistenti nelle versioni precedenti e aggiunto altro, come illustrato nella figura seguente.

certificati x.509 versione 1, 2 e 3

Alcuni di questi campi ed estensioni possono essere specificati direttamente quando si usa la classe CertificateRequestProperties per creare una richiesta di certificato. La maggior parte non può. Questi campi possono essere compilati dall'autorità emittente oppure possono essere lasciati vuoti. Per altre informazioni sui campi, vedere le sezioni seguenti:

Campi versione 1

Campo Descrizione
Versione Specifica il numero di versione del certificato codificato. Attualmente, i valori possibili di questo campo sono 0, 1 o 2.
Numero di serie Contiene un numero intero positivo e univoco assegnato dall'autorità di certificazione (CA) al certificato.
Algoritmo di firma Contiene un identificatore di oggetto (OID) che specifica l'algoritmo usato dalla CA per firmare il certificato. Ad esempio, 1.2.840.113549.1.1.5 specifica un algoritmo hash SHA-1 combinato con l'algoritmo di crittografia RSA di RSA Laboratories.
Emittente Contiene il nome distinto X.500 (DN) della CA che ha creato e firmato il certificato.
Validità Specifica l'intervallo di tempo durante il quale il certificato è valido. Le date fino alla fine del 2049 usano il formato Coordinated Universal Time (Greenwich Mean Time) (yymmddhhmmssz). Le date che iniziano con il 1° gennaio 2050 usano il formato di ora generalizzato (aaaammdhhmmssz).
Argomento Contiene un nome distinto X.500 dell'entità associata alla chiave pubblica contenuta nel certificato.
Chiave pubblica Contiene la chiave pubblica e le informazioni sull'algoritmo associate.

Campi versione 2

Un certificato X.509 versione 2 contiene i campi di base definiti nella versione 1 e aggiunge i campi seguenti.

Campo Descrizione
Identificatore univoco dell'autorità di certificazione Contiene un valore univoco che può essere usato per rendere non ambiguo il nome X.500 della CA quando riutilizzato da entità diverse nel tempo.
Identificatore univoco dell'entità Contiene un valore univoco che può essere usato per rendere il nome X.500 dell'oggetto del certificato non ambiguo quando riutilizzato da entità diverse nel tempo.

Estensioni versione 3

Un certificato X.509 versione 3 contiene i campi definiti nella versione 1 e nella versione 2 e aggiunge le estensioni del certificato.

Campo Descrizione
Identificatore della Chiave di Autorità Identifica la chiave pubblica dell'autorità di certificazione (CA) che corrisponde alla chiave privata della CA usata per firmare il certificato.
Vincoli di base Specifica se l'entità può essere usata come CA e, in tal caso, il numero di ca subordinate che possono esistere sotto di essa nella catena di certificati.
Politiche dei certificati Specifica i criteri in base ai quali è stato rilasciato il certificato e gli scopi per cui può essere usato.
Punti di distribuzione CRL Contiene l'URI dell'elenco di revoche di certificati di base( CRL).
Uso avanzato delle chiavi Specifica il modo in cui è possibile usare la chiave pubblica contenuta nel certificato.
Nome alternativo dell'autorità emittente Specifica uno o più formati alternativi del nome per l'emittente della richiesta di certificato.
Utilizzo chiave Specifica le restrizioni relative alle operazioni che possono essere eseguite dalla chiave pubblica contenuta nel certificato.
Vincoli dei nomi Specifica lo spazio dei nomi all'interno del quale devono trovarsi tutti i nomi dei soggetti della gerarchia dei certificati. L'estensione viene usata solo in un certificato della CA.
Vincoli dei criteri Vincola la convalida del percorso vietando il mapping dei criteri o richiedendo che ogni certificato nella gerarchia contenga un identificatore di criteri accettabile. L'estensione viene usata solo in un certificato della CA.
Mappature delle politiche Specifica i criteri in una CA subordinata che corrispondono ai criteri nella CA emittente.
Periodo di utilizzo della chiave privata Specifica un periodo di validità diverso per la chiave privata rispetto al certificato a cui è associata la chiave privata.
Nome Alternativo del Soggetto Specifica una o più forme di nome alternativo per l'oggetto delle richieste di certificati. I moduli alternativi di esempio includono indirizzi di posta elettronica, nomi DNS, indirizzi IP e URI.
Attributi del Soggetto della Directory Trasmette attributi di identificazione come la nazionalità del soggetto del certificato. Il valore dell'estensione è una sequenza di coppie OID-value.
Identificatore della chiave del soggetto Distingue tra più chiavi pubbliche mantenute dall'oggetto del certificato. Il valore dell'estensione è in genere un hash SHA-1 della chiave.