Compartir a través de


Introducción a los certificados

En este artículo se describe el uso de certificados en aplicaciones winUI. Los certificados digitales se usan en criptografía de clave pública para enlazar una clave pública a una persona, equipo u organización. Las identidades enlazadas se usan con más frecuencia para autenticar una entidad en otra. Por ejemplo, los certificados a menudo se usan para autenticar un servidor web a un usuario y un usuario en un servidor web. Puede crear solicitudes de certificado e instalar o importar certificados emitidos. También puede inscribir un certificado en una jerarquía de certificados.

Almacenes de certificados compartidos

Las aplicaciones WinUI usan el nuevo modelo de aplicación aislamientoista introducido en Windows 8. En este modelo, las aplicaciones se ejecutan en una construcción de sistema operativo de bajo nivel, denominada contenedor de aplicaciones, que prohíbe que la aplicación acceda a recursos o archivos fuera de sí mismo, a menos que se permita explícitamente hacerlo. En las secciones siguientes se describen las implicaciones que esto tiene en la infraestructura de clave pública (PKI).

Almacenamiento de certificados por contenedor de aplicaciones

Los certificados diseñados para su uso en un contenedor de aplicaciones específico se almacenan en por usuario, por ubicación de contenedor de aplicaciones. Una aplicación que se ejecuta en un contenedor de aplicaciones solo tiene acceso de escritura a su propio almacenamiento de certificados. Si la aplicación agrega certificados a cualquiera de sus almacenes, otras aplicaciones no pueden leer estos certificados. Si se desinstala una aplicación, también se quitan los certificados específicos de ella. Una aplicación también tiene acceso de lectura a almacenes de certificados de máquina local distintos del almacén MY y REQUEST.

Cache

Cada contenedor de aplicaciones tiene una caché aislada en la que puede almacenar los certificados de emisor necesarios para la validación, las listas de revocación de certificados (CRL) y las respuestas del protocolo de estado de certificado en línea (OCSP).

Certificados y claves compartidos

Cuando se inserta una tarjeta inteligente en un lector, los certificados y claves contenidos en la tarjeta se propagan al almacén MY de usuario donde pueden compartirse con cualquier aplicación de plena confianza que el usuario esté ejecutando. Sin embargo, de forma predeterminada, los contenedores de aplicaciones no tienen acceso al almacén MY por usuario.

Para solucionar este problema y habilitar grupos de usuarios para acceder a grupos de recursos, el modelo de aislamiento de contenedor de aplicaciones admite el concepto de capacidades. Una funcionalidad permite que un proceso de contenedor de aplicaciones acceda a un recurso específico. La funcionalidad sharedUserCertificates concede a un contenedor de aplicaciones acceso de lectura a los certificados y claves contenidos en el almacén MY de usuario y el almacén raíz de confianza de tarjeta inteligente. La funcionalidad no concede acceso de lectura al almacén de solicitudes del usuario.

Especifique la funcionalidad sharedUserCertificates en el manifiesto como se muestra en el ejemplo siguiente.

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

Campos de certificado

El estándar de certificado de clave pública X.509 se ha revisado con el tiempo. Cada versión sucesiva de la estructura de datos ha conservado los campos que existían en las versiones anteriores y ha agregado más, como se muestra en la ilustración siguiente.

Versiones del certificado x.509 1, 2 y 3

Algunos de estos campos y extensiones se pueden especificar directamente cuando se usa la clase CertificateRequestProperties para crear una solicitud de certificado. La mayoría no puede. Estos campos se pueden rellenar mediante la autoridad emisora o pueden dejarse en blanco. Para obtener más información sobre los campos, consulte las secciones siguientes:

Campos de la versión 1

Campo Descripción
Versión Especifica el número de versión del certificado codificado. Actualmente, los valores posibles de este campo son 0, 1 o 2.
Número de serie Contiene un entero positivo y único asignado por la entidad de certificación (CA) al certificado.
Algoritmo de firma Contiene un identificador de objeto (OID) que especifica el algoritmo utilizado por la ENTIDAD de certificación para firmar el certificado. Por ejemplo, 1.2.840.113549.1.1.5 especifica un algoritmo hash SHA-1 combinado con el algoritmo de cifrado RSA de los laboratorios RSA.
Emisor Contiene el nombre distintivo X.500 (DN) de la entidad de certificación que creó y firmó el certificado.
Validez Especifica el intervalo de tiempo durante el que el certificado es válido. Las fechas hasta finales de 2049 usan el formato hora universal coordinada (hora media de Greenwich) (yymmddhhmmssz). Las fechas a partir del 1 de enero de 2050 usan el formato de hora generalizado (aaaammddhhmmssz).
Asunto Contiene un nombre distintivo X.500 de la entidad asociada a la clave pública contenida en el certificado.
Clave pública Contiene la clave pública y la información del algoritmo asociada.

Campos de la versión 2

Un certificado X.509 versión 2 contiene los campos básicos definidos en la versión 1 y agrega los campos siguientes.

Campo Descripción
Identificador único del emisor Contiene un valor único que se puede usar para hacer que el nombre X.500 de la autoridad certificadora sea inequívoco cuando se reutilice en diferentes entidades a lo largo del tiempo.
Identificador único del sujeto Contiene un valor único que se puede usar para hacer que el nombre X.500 del sujeto del certificado sea inequívoco cuando es reutilizado por diferentes entidades a lo largo del tiempo.

Extensiones de la versión 3

Un certificado X.509 versión 3 contiene los campos definidos en la versión 1 y la versión 2 y agrega extensiones de certificado.

Campo Descripción
Identificador de clave de autoridad Identifica la clave pública de la entidad de certificación (CA) que corresponde a la clave privada de ca usada para firmar el certificado.
Restricciones básicas Especifica si la entidad se puede usar como una ENTIDAD de certificación y, si es así, el número de CA subordinadas que pueden existir debajo de ella en la cadena de certificados.
Directivas de certificado Especifica las directivas con las que se ha emitido el certificado y los propósitos para los que se puede usar.
Puntos de distribución CRL Contiene el URI de la lista de revocación de certificados base (CRL).
Uso mejorado de claves Especifica la manera en que se puede usar la clave pública contenida en el certificado.
Nombre alternativo del emisor Especifica una o más formas alternativas de nombre para el emisor de la solicitud de certificado.
Uso de claves Especifica restricciones en las operaciones que puede realizar la clave pública contenida en el certificado.
Restricciones de nombre Especifica el espacio de nombres en el que se deben ubicar todos los nombres de sujeto de una jerarquía de certificados. La extensión solo se usa en un certificado de autoridad de certificación.
Restricciones de directiva Restringe la verificación de la ruta mediante la prohibición del mapeo de directivas y requiere que cada certificado en la jerarquía contenga un identificador de directiva aceptable. La extensión solo se utiliza en un certificado de autoridad de certificación.
Mapeo de políticas Especifica las políticas de una CA subordinada que corresponden a las políticas de la CA emisora.
Período de uso de clave privada Especifica un período de validez diferente para la clave privada que para el certificado con el que está asociada la clave privada.
Nombre Alternativo del Sujeto Especifica una o más formas de nombre alternativas para el sujeto de la solicitud de certificado. Los formularios alternativos de ejemplo incluyen direcciones de correo electrónico, nombres DNS, direcciones IP e URI.
Atributos de directorio del sujeto Transmite atributos de identificación como la nacionalidad del sujeto del certificado. El valor de extensión es una secuencia de pares OID-value.
Identificador de clave de asunto Diferencia entre varias claves públicas mantenidas por el firmante del certificado. El valor de extensión suele ser un hash SHA-1 de la clave.