Introduzione ai certificati
Questo articolo illustra l'uso dei certificati nelle app UWP (Universal Windows Platform). I certificati digitali vengono utilizzati nella crittografia a chiave pubblica per associare una chiave pubblica a una persona, un computer o un'organizzazione. Le identità associate vengono spesso utilizzate per eseguire l’autenticazione di un'entità in un'altra. Ad esempio, i certificati vengono spesso usati per autenticare un server Web a un utente e un utente a un server Web. È possibile creare richieste di certificati e installare o importare certificati emessi. È anche possibile registrare un certificato in una gerarchia di certificati.
Archivi certificati condivisi
Le app UWP 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 di certificati per contenitore di app
I certificati destinati all'uso in un contenitore di app specifico vengono archiviati in ogni utente, in base alle posizioni dei contenitori dell'app. Un'app in esecuzione in un contenitore di app ha accesso in scrittura solo alla propria risorsa di archiviazione 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 certificati del computer locale diversi dagli archivi 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 MY 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 affrontare 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à sharedUserCertificates concede a un contenitore di app l'accesso in lettura ai certificati e alle chiavi contenuti nell'archivio MY utente e nell'archivio radici attendibili smart card. La funzionalità non concede l'accesso in lettura all'archivio RICHIESTA utente.
Specificare la funzionalità sharedUserCertificates nel manifesto, come illustrato nell'esempio seguente.
<Capabilities>
<Capability Name="sharedUserCertificates" />
</Capabilities>
Campi del 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.
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 maggiori 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. |
Autorità di certificazione | 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) (aammgghhmmssz). Le date che iniziano con il 1 gennaio 2050 usano il formato di ora generalizzato (aaaammgghhmmssz). |
Oggetto | 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 emettitore | 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 del soggetto | Contiene un valore univoco che può essere usato per rendere non ambiguo il nome X.500 dell'oggetto certificato 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 di chiave dell'autorità | Identifica la chiave pubblica dell'autorità di certificazione (CA) che corrisponde alla chiave privata CA usata per firmare il certificato. |
Limitazioni 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. |
Criteri certificato | 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). |
Utilizzo chiavi avanzato | Specifica il modo in cui è possibile usare la chiave pubblica contenuta nel certificato. |
Nome alternativo dell'emittente | Specifica uno o più moduli di nome alternativo per l'emittente della richiesta di certificato. |
Utilizzo chiavi | Specifica le limitazioni relative alle operazioni che possono essere eseguite dalla chiave pubblica contenuta nel certificato. |
Vincoli del nome | Specifica lo spazio dei nomi in cui devono trovarsi tutti i nomi dei soggetti in una gerarchia di certificati. L'estensione viene usata solo in un certificato 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 CA. |
Mapping dei criteri | 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 soggetto | Specifica uno o più moduli di nome alternativo per l'oggetto della richiesta di certificato. I moduli alternativi di esempio includono indirizzi di posta elettronica, nomi DNS, indirizzi IP e URI. |
Attributi della directory del soggetto | Trasmette attributi di identificazione come la nazionalità del soggetto del certificato. Il valore dell'estensione è una sequenza di coppie OID-valore. |
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. |