Atestación de certificados de cliente X.509

En este artículo se describen los conceptos implicados al aprovisionar dispositivos mediante la atestación de certificados X.509 en Device Provisioning Service (DPS). Este artículo es apropiado para todas las personas implicadas en la preparación de un dispositivo para la implementación.

Los certificados X.509 se pueden almacenar en un HSM de módulo de seguridad de hardware.

Sugerencia

Se recomienda usar un HSM con los dispositivos para almacenar de forma segura los secretos, como el certificado X.509, en los dispositivos de producción.

Aprovisionamiento de dispositivos con certificados X.509

El uso de certificados X.509 como un mecanismo de atestación es una manera excelente para escalar la producción y simplificar el aprovisionamiento de dispositivos. Los certificados X.509 normalmente están organizados en una cadena de certificados de confianza en la que cada certificado de la cadena está firmado por la clave privada del certificado superior siguiente y así sucesivamente, terminando en un certificado raíz autofirmado. Esta disposición establece una cadena de confianza delegada del certificado raíz generado por una entidad de certificación (CA) de confianza a través de cada certificado intermedio al certificado final instalado en un dispositivo. Para más información consulte Autenticación de dispositivos mediante certificados de entidades de certificación X.509.

A menudo la cadena de certificados representa una jerarquía lógica o física asociada a los dispositivos. Por ejemplo, un fabricante podría crear la siguiente jerarquía de certificados:

  • Un certificado de CA raíz autofirmado comienza la cadena de certificados.
  • El certificado raíz genera un certificado de CA intermedio único para cada fábrica.
  • Cada certificado de fábrica genera un certificado de CA intermedio único para cada línea de producción de la fábrica.
  • El certificado de línea de producción genera un certificado de dispositivo único (entidad final) para cada dispositivo fabricado en la línea.

Para más información consulte Explicación de los conceptos de certificados de entidad de certificación X.509 en el sector de IoT.

Certificado raíz

Un certificado raíz es un certificado X.509 autofirmado que representa una entidad de certificación (CA). Es el término o anclaje de veracidad de la cadena de certificados. Una organización puede emitir sus propios certificados raíz o puede adquirirlos a través de una entidad de certificación raíz. El certificado raíz también se puede denominar certificado de CA raíz.

Certificado intermedio

Un certificado intermedio es un certificado X.509 que ha sido firmado por el certificado raíz (o por otro certificado que actúa como certificado intermedio en la cadena hasta el certificado raíz) y también puede firmar nuevos certificados. El último certificado intermedio de una cadena firma el certificado de hoja. Un certificado intermedio también se puede llamar un certificado de CA intermedio.

Los certificados intermedios se usan de varias maneras. Por ejemplo, se pueden usar para agrupar dispositivos en función de líneas de producto, clientes que adquieran dispositivos, divisiones de la empresa o fábricas.

Supongamos que Contoso es una gran corporación con su propia infraestructura de clave pública (PKI) que usa el certificado raíz denominado ContosoRootCert. Cada subsidiaria de Contoso tiene su propio certificado intermedio que está firmado por ContosoRootCert. Cada subsidiaria usa su certificado intermedio para firmar sus certificados de hoja para cada dispositivo. En este escenario, Contoso puede usar una única instancia de DPS, donde ContosoRootCert es un certificado comprobado. Puede haber un grupo de inscripción para cada subsidiaria. De esta forma, cada subsidiaria individual no tiene que ocuparse de comprobar los certificados.

Certificado de entidad final "de hoja"

Un certificado de hoja, o certificado de entidad final, identifica al titular del certificado. Tiene el certificado raíz en su cadena de certificados y cero o más certificados intermedios. Un certificado de hoja no se usa para firmar otros certificados. Identifica de forma exclusiva un dispositivo ante el servicio de aprovisionamiento, y a veces se lo conoce como certificado del dispositivo. Durante la autenticación, un dispositivo usa la clave privada asociada con el certificado para responder a una prueba de desafío de posesión del servicio.

Los certificados de hoja que se usan con las entradas de inscripción individual deben tener el nombre común (CN) del firmante establecido en el id. de registro. El identificador de registro identifica el registro del dispositivo con DPS y debe ser único para la instancia de DPS (ámbito de identificador) donde se registra el dispositivo.

En el caso de los grupos de inscripción, el nombre común (CN) del firmante establece el id. de dispositivo registrado con IoT Hub. El identificador de dispositivo se mostrará en los registros del registro del dispositivo autenticado en el grupo de inscripción. En el caso de inscripciones individuales, el identificador de dispositivo se puede establecer en la entrada de inscripción. Si no se establece en la entrada de inscripción, se usa el nombre común (CN) del asunto.

Para obtener más información, consulte Autenticación de dispositivos firmados con certificados de CA X.509.

Control del acceso a dispositivos con certificados X.509

El servicio de aprovisionamiento expone dos tipos de inscripción que se puede usar para controlar el acceso a dispositivos mediante el mecanismo de atestación X.509:

  • Las entradas de inscripción individual se configuran con el certificado de dispositivo asociado a un dispositivo específico. Estas entradas controlan las inscripciones para dispositivos específicos.
  • Las entradas de grupo de inscripción están asociadas con un certificado de CA raíz o intermedio específico. Estas entradas controlan las inscripciones para todos los dispositivos que tienen ese certificado intermedio o raíz en su cadena de certificados.

Solo se puede especificar un certificado en una entrada de inscripción en la instancia de DPS.

Compatibilidad mutua con TLS

Cuando las inscripciones de DPS están configuradas para la atestación X.509, DPS admite TLS mutua (mTLS).

Requisitos de la cadena de dispositivo de DPS

Cuando un dispositivo está intentando registrarse a través de DPS mediante un grupo de inscripción, debe enviar la cadena de certificados desde el certificado de hoja a un certificado comprobado. De lo contrario, se produce un error en la autenticación.

Por ejemplo, si únicamente se comprueba el certificado raíz y se carga un certificado intermedio en el grupo de inscripción, el dispositivo debe presentar la cadena de certificados, desde el certificado de hoja al certificado raíz comprobado. Esta cadena de certificados incluiría cualquier certificado intermedio. Si el servicio DPS no puede atravesar la cadena de certificados hasta llegar a un certificado comprobado, se produce un error de autenticación.

Por ejemplo, imagine que una corporación usa la siguiente cadena para un dispositivo.

Diagrama que muestra una cadena de certificados de dispositivo de ejemplo.

En este ejemplo, el certificado raíz se comprueba con DPS y el certificado intermediate2 se carga en el grupo de inscripción.

Diagrama que resalta los certificados raíz e intermedio 2 que se cargan en DPS.

Si el dispositivo solo envía la siguiente cadena de dispositivo durante el aprovisionamiento, se produce un error de autenticación. Esto se debe a que DPS no puede intentar la autenticación basándose en la supuesta validez del certificado intermediate1.

Diagrama que muestra una cadena de certificados que produce un error de autenticación porque no se encadena a la raíz.

Si el dispositivo envía la cadena de dispositivo completa durante el aprovisionamiento, como se indica a continuación, DPS puede intentar la autenticación del dispositivo.

Diagrama que muestra una cadena de certificados de dispositivo correcta.

Orden de las operaciones de DPS con certificados

Cuando un dispositivo se conecta al servicio de aprovisionamiento, el servicio recorre su cadena de certificados empezando por el certificado del dispositivo (hoja) y busca una entrada de inscripción correspondiente. Usa la primera entrada que encuentra en la cadena para determinar si se va a aprovisionar el dispositivo. Es decir, si existe una inscripción individual para el certificado del dispositivo, el servicio de aprovisionamiento aplica esa entrada. Si no hay una inscripción individual para el dispositivo, el servicio busca un grupo de inscripción que se corresponda con el primer certificado intermedio. Si encuentra uno, aplica esa entrada; de lo contrario, busca un grupo de inscripción para el siguiente certificado intermedio y así sucesivamente en la cadena hasta la raíz.

El servicio aplica la primera entrada que encuentra de forma que:

  • Si la primera entrada de inscripción que se encuentra está habilitada, el servicio aprovisiona el dispositivo.
  • Si la primera entrada de inscripción que se encuentra está deshabilitada, el servicio no aprovisiona el dispositivo.
  • Si no se encuentra ninguna entrada de inscripción para cualquiera de los certificados de la cadena de certificados del dispositivo, el servicio no aprovisiona el dispositivo.

Cada certificado de la cadena de certificados de un dispositivo se puede especificar en una entrada de inscripción, pero solo se puede especificar en una entrada de la instancia de DPS.

Este mecanismo y la estructura jerárquica de las cadenas de certificados proporcionan una flexibilidad eficaz en la forma de controlar el acceso de dispositivos individuales y de grupos de dispositivos. Por ejemplo, imagine cinco dispositivos con las siguientes cadenas de certificado:

  • Dispositivo 1: certificado raíz -> certificado A -> certificado de dispositivo 1
  • Dispositivo 2: certificado raíz -> certificado A -> certificado de dispositivo 2
  • Dispositivo 3: certificado raíz -> certificado A -> certificado de dispositivo 3
  • Dispositivo 4: certificado raíz -> certificado B -> certificado de dispositivo 4
  • Dispositivo 5: certificado raíz -> certificado B -> certificado de dispositivo 5

En principio, puede crear una única entrada de inscripción de grupo habilitada para el certificado raíz para habilitar el acceso para los cinco dispositivos. Si más adelante el certificado B se pone en peligro, puede crear una entrada de grupo de inscripción deshabilitada para el certificado B para evitar que el Dispositivo 4 y el Dispositivo 5 se inscriban. Si después el Dispositivo 3 se pone en peligro, puede crear una entrada de inscripción individual deshabilitada para su certificado. Esto revoca el acceso del Dispositivo 3, pero sigue permitiendo que el Dispositivo 1 y el Dispositivo 2 se inscriban.