Condividi tramite


Gestori di estensione

A partire da X.509 formato certificato versione 3, un certificato può contenere estensioni del certificato. Per il contenuto di un certificato X.509, vedere Proprietà del certificato.) Queste estensioni indicano informazioni aggiuntive. Ad esempio, un'estensione può indicare informazioni aggiuntive sull'identificazione del soggetto oppure può indicare informazioni sull'utilizzo delle chiavi, che specificano le attività (ad esempio firma o crittografia) per le quali è possibile usare una chiave. Un set di estensioni standard è definito per l'uso dell'applicazione e le estensioni possono anche essere personalizzate.

Ogni estensione ha una stringa di identificatore di oggetto associata che identifica il tipo di informazioni aggiuntive e una struttura di dati che contiene queste informazioni. Ad esempio, l'identificatore dell'oggetto di utilizzo della chiave è "2.5.29.15", che indica le informazioni sull'utilizzo delle chiavi. La struttura dei dati associata è un CRYPT_BIT_BLOB (campo bit) che specifica come usare la chiave.

È possibile aggiungere un'estensione a un certificato prima che venga rilasciata. Quando il certificato viene rilasciato, tutte le estensioni abilitate fanno parte del certificato. Se un'estensione è contrassegnata come critica, il relativo uso deve essere noto tramite l'applicazione e l'applicazione deve rispettare la finalità o il valore dell'estensione. Servizi certificati consente l'impostazione delle estensioni in un certificato non rilasciato tramite metodi forniti da ICertAdmin e ICertServerPolicy. Per informazioni dettagliate sulle estensioni dei certificati, vedere CERT_EXTENSION nella documentazione di CryptoAPI. Per informazioni sulle strutture dei dati comuni dell'estensione del certificato, vedere strutture di estensione del certificato X.509.

Il gestore di estensioni è un oggetto COM che fornisce routine per la codifica delle estensioni e dei tipi di dati più complessi, ma comunemente usati, ad esempio IA5String o PrintableString.

Le estensioni con i tipi di dati DATE, LONGe BSTR non richiedono un gestore di estensioni. Il modulo criteri chiama semplicemente ICertServerPolicy::SetCertificateExtension con il parametro type impostato su un valore che rappresenta il tipo di dati dell'estensione: PROPTYPE_DATE, PROPTYPE_LONG o PROPTYPE_STRING. Passa quindi l'estensione al motore server. Il motore server esegue a sua volta la codifica astratta notazione sintassi one (ASN.1) prima di archiviare l'estensione nel certificato.

Tuttavia, le estensioni con tipi di dati diversi da questi tipi predefiniti devono essere codificate da asn.1 da un gestore di estensioni prima che il modulo criteri li passi al motore server. Quando il modulo criteri chiama ICertServerPolicy::SetCertificateExtension per passare un'estensione con codifica ASN.1 al motore del server, deve impostare il parametro type su PROPTYPE_BINARY. Il motore server archivia quindi semplicemente questa estensione codificata nel certificato.

Il gestore dell'estensione predefinito, Certenc.dll, esporta una serie di interfacce ICertEncodeXXX e può essere chiamato dal modulo criteri. Le informazioni sul tipo necessarie sono contenute anche in Certencl.dll fornito in Platform Software Development Kit (SDK). Ogni interfaccia fornisce un metodo Encode che restituisce un'estensione del certificato con codifica ASN.1 al modulo dei criteri in un formato binario. Il modulo criteri può quindi impostare l'estensione in un certificato chiamando il metodo ICertServerPolicy::SetCertificateExtension.

Per altre informazioni, vedere Scrittura di gestori di estensioni personalizzati.