Compartir vía


Autenticación de un dispositivo de bajada en Azure IoT Hub

Se aplica a:Marca de verificación de IoT Edge 1.5 IoT Edge 1.5

Importante

IoT Edge 1.5 LTS es la versión compatible. IoT Edge 1.4 LTS finaliza su ciclo de vida el 12 de noviembre de 2024. Si está usando una versión anterior, consulte Actualización de IoT Edge.

En un escenario de puerta de enlace transparente, los dispositivos descendentes, a veces denominados dispositivos hijo, necesitan identidades en IoT Hub como cualquier otro dispositivo. En este artículo se explican las opciones para autenticar un dispositivo descendente en IoT Hub y se muestra cómo declarar la conexión de la puerta de enlace.

Nota:

Un dispositivo aguas abajo envía datos directamente a Internet o a dispositivos de puerta de enlace, independientemente de si están habilitados para IoT Edge o no. Un dispositivo secundario puede ser un dispositivo de bajada o un dispositivo de puerta de enlace en una topología anidada.

Hay tres pasos generales para configurar una conexión de puerta de enlace transparente correcta. En este artículo se describe el segundo paso:

  1. Configure el dispositivo de puerta de enlace como servidor para que los dispositivos de bajada puedan conectarse a él de forma segura. Configure la puerta de enlace para recibir mensajes de los dispositivos de bajada y enrutarlos al destino adecuado. Para realizar esos pasos, consulte Configuración de un dispositivo IoT Edge para que actúe como puerta de enlace transparente.
  2. Cree una identidad de dispositivo para el dispositivo de bajada para que pueda autenticarse en IoT Hub. Configure el dispositivo de bajada para enviar mensajes a través del dispositivo de puerta de enlace.
  3. Conecte el dispositivo de bajada al dispositivo de puerta de enlace y empiece a enviar mensajes. Para realizar esos pasos, consulte Conexión de un dispositivo de bajada a una puerta de enlace Azure IoT Edge.

Los dispositivos de bajada se pueden autenticar con IoT Hub mediante uno de los tres métodos: claves simétricas (a veces denominadas claves de acceso compartido), certificados autofirmados X.509 o certificados firmados por la entidad de certificación (CA) X.509. Los pasos de autenticación son similares a los de configurar cualquier dispositivo que no sea IoT Edge con IoT Hub, con pequeñas diferencias para declarar la relación de puerta de enlace.

No se admite el aprovisionamiento automático de dispositivos de bajada con Azure IoT Hub Device Provisioning Service (DPS).

Requisitos previos

Complete los pasos descritos en Configuración de un dispositivo IoT Edge para que actúe como puerta de enlace transparente.

Si está utilizando la autenticación X.509, genere certificados para su dispositivo subordinado. Asegúrese de que tiene el mismo certificado de entidad de certificación raíz y el script de generación de certificados que usó en el artículo puerta de enlace transparente.

Este artículo hace referencia al nombre de host de la puerta de enlace en varios puntos. El nombre de host de puerta de enlace se establece en el parámetro hostname del archivo de configuración en el dispositivo de puerta de enlace de IoT Edge. También se usa en la cadena de conexión del dispositivo de bajada. El nombre de host de la puerta de enlace debe resolverse en una dirección IP mediante DNS o una entrada de archivo host en el dispositivo de bajada.

Registro del dispositivo con IoT Hub

Elija cómo desea que el dispositivo de bajada se autentique con IoT Hub:

  • Autenticación de clave simétrica: IoT Hub crea una clave que se coloca en el dispositivo de bajada. Cuando el dispositivo se autentica, IoT Hub comprueba que las dos claves coinciden. No es necesario crear certificados adicionales para usar la autenticación de clave simétrica.

    Este método permite comenzar de manera más rápida si está probando puertas de enlace en un escenario de desarrollo o prueba.

  • Autenticación autofirmada X.509: a veces denominada autenticación mediante huella digital, porque comparte la huella digital del certificado X.509 del dispositivo con IoT Hub.

    Se recomienda la autenticación de certificados para los dispositivos en escenarios de producción.

  • Autenticación firmada por la entidad de certificación X.509: cargue el certificado de entidad de certificación raíz en IoT Hub. Cuando los dispositivos presentan su certificado X.509 para la autenticación, IoT Hub comprueba que pertenece a una cadena de confianza firmada por el mismo certificado de entidad de certificación raíz.

    Se recomienda la autenticación de certificados para los dispositivos en escenarios de producción.

Autenticación de clave simétrica

La autenticación de clave simétrica (o de clave de acceso compartido) es la manera más sencilla de autenticarse con IoT Hub. Con la autenticación de clave simétrica, se asocia una clave de base64 con el identificador de dispositivo IoT en la instancia de IoT Hub. Esa clave se incluye en las aplicaciones de IoT para que el dispositivo pueda presentarla cuando se conecta a IoT Hub.

Agregue un nuevo dispositivo IoT en ioT Hub mediante Azure Portal, la CLI de Azure o la extensión de IoT para Visual Studio Code. Recuerde que los dispositivos de bajada se deben identificar en IoT Hub como dispositivos IoT normales, no como dispositivos IoT Edge.

Al crear la identidad del dispositivo, proporcione la información siguiente:

  • Cree un identificador para el dispositivo.

  • Seleccione Clave simétrica como el tipo de autenticación.

  • Seleccione Establecer un dispositivo principal y seleccione el dispositivo de puerta de enlace de IoT Edge a través del que se conecta este dispositivo descendente. Siempre puede cambiar el dispositivo primario más adelante.

    Captura de pantalla de cómo crear un id. de dispositivo con autorización de clave simétrica en Azure Portal.

    Nota:

    La configuración del dispositivo primario solía ser un paso opcional para los dispositivos de nivel inferior que utilizan la autenticación de clave simétrica. Sin embargo, a partir de la versión 1.1.0, de IoT Edge, cada dispositivo de nivel inferior debe estar asignado a un dispositivo primario.

    Puede configurar el centro de IoT Edge para volver al comportamiento anterior estableciendo la variable de entorno AuthenticationMode en el valor CloudAndScope.

También puede usar la extensión IoT para la CLI de Azure con el fin de completar la misma operación. En el ejemplo siguiente se usa el comando az iot hub device-identity para crear un dispositivo IoT con autenticación de clave simétrica y asignar un dispositivo principal:

az iot hub device-identity create -n {iothub name} -d {new device ID} --device-scope {deviceScope of parent device}

Sugerencia

Puede enumerar las propiedades del dispositivo, incluyendo el ámbito del dispositivo mediante az iot hub device-identity list --hub-name {iothub name}.

A continuación, recupere y modifique la cadena de conexión para que el dispositivo sepa conectarse a través de su puerta de enlace.

Autenticación con X.509 autofirmado

Para la autenticación con X.509 autofirmado, en ocasiones denominada autenticación de huella digital, tendrá que crear certificados para el dispositivo de bajada. Estos certificados contienen una huella digital que se comparte con IoT Hub para la autenticación.

  1. Con el certificado de la entidad de certificación, cree dos certificados de dispositivo (principal y secundario) para el dispositivo de bajada.

    Si no tiene una entidad de certificación para crear certificados X. 509, puede usar los scripts de certificado de demostración de IoT Edge para crear certificados de dispositivo de bajada. Siga los pasos para crear certificados autofirmados. Use el mismo certificado de entidad de certificación raíz que generó los certificados para el dispositivo de puerta de enlace.

    Si crea sus propios certificados, asegúrese de que el nombre de sujeto del certificado del dispositivo se establece en el identificador de dispositivo que usa al registrar el dispositivo de IoT en Azure IoT Hub. Esta opción de configuración es necesaria para la autenticación.

  2. Recupere la huella digital SHA1 (denominada huella digital en la interfaz de IoT Hub) de cada certificado, que es una cadena de 40 caracteres hexadecimales. Use el comando de openssl siguiente para ver el certificado y localizar la huella digital:

    • Windows:

      openssl x509 -in <path to primary device certificate>.cert.pem -text -fingerprint
      
    • Linux:

      openssl x509 -in <path to primary device certificate>.cert.pem -text -fingerprint | sed 's/[:]//g'
      

    Ejecute este comando dos veces, una vez para el certificado principal y otra para el certificado secundario. Proporcione huellas digitales para ambos certificados cuando registre un nuevo dispositivo IoT mediante certificados X. 509 autofirmados.

  3. Vaya a IoT Hub en Azure Portal y cree una nueva identidad de dispositivo IoT con los siguientes valores:

    • Proporcione el identificador de dispositivo que coincida con el nombre de sujeto de los certificados de dispositivo.
    • Seleccione X.509 autofirmado como el tipo de autenticación.
    • Pegue las cadenas hexadecimales que ha copiado de los certificados principal y secundario del dispositivo.
    • Seleccione Establecer un dispositivo primario y elija el dispositivo de puerta de enlace de IoT Edge a través del que se conecta este dispositivo de bajada. Siempre puede cambiar el dispositivo primario más adelante.

    Captura de pantalla que muestra cómo crear un id. de dispositivo con una autorización autofirmada X.509 en Azure Portal.

  4. Copie los certificados de dispositivo principal y secundario y sus claves en cualquier ubicación del dispositivo de bajada. Mueva también una copia del certificado de la entidad de certificación raíz compartido que generaron el certificado de dispositivo de puerta de enlace y los certificados de dispositivo de bajada.

    Hará referencia a estos archivos de certificado en todas las aplicaciones del dispositivo de bajada que se conecten a IoT Hub. Puede usar un servicio como Azure Key Vault o una función como Protocolo de copia segura para mover los archivos de certificado.

  5. En función de su lenguaje preferido, revise los ejemplos de cómo se puede hacer referencia a los certificados X. 509 en las aplicaciones de IoT:

También puede usar la extensión IoT para la CLI de Azure para completar la misma operación de creación de dispositivos. En el ejemplo siguiente se usa el comando az iot hub device-identity para crear un dispositivo IoT con autenticación autofirmada X.509 y se asigna un dispositivo principal:

az iot hub device-identity create -n {iothub name} -d {device ID} --device-scope {deviceScope of gateway device} --am x509_thumbprint --ptp {primary thumbprint} --stp {secondary thumbprint}

Sugerencia

Puede enumerar las propiedades del dispositivo, incluyendo el ámbito del dispositivo mediante az iot hub device-identity list --hub-name {iothub name}.

A continuación, recupere y modifique la cadena de conexión para que el dispositivo sepa conectarse a través de su puerta de enlace.

Autenticación X.509 firmado por una entidad de certificación

Para la autenticación de certificados X.509 firmados por entidad de certificación (CA), necesita un certificado de entidad de certificación raíz registrado en IoT Hub que use para firmar los certificados para el dispositivo de bajada. Cualquier dispositivo que utilice un certificado emitido por el certificado de la autoridad certificadora raíz o cualquiera de sus certificados intermedios está permitido para autenticarse.

Para obtener una introducción sobre el uso de certificados de entidad de certificación X.509 para autenticarse en IoT Hub, consulte las ventajas de la autenticación de certificados de entidad de certificación X.509.

Para configurar la autenticación firmada por CA X.509 para un dispositivo descendente, siga estos pasos:

  1. Obtenga un certificado de autoridad certificadora X.509 que puede usar para firmar certificados para su dispositivo descendente. Para obtener un ejemplo de cómo configurar la autenticación firmada por entidad de certificación X.509, consulte el siguiente escenario de ejemplo.

  2. Cree una cadena de certificados para el dispositivo de bajada. Para más información, siga los pasos descritos en Creación de una entidad de certificación subordinada.

  3. Registre el certificado de entidad de certificación X.509 en el IoT Hub. Para más información, siga los pasos descritos en Registro del certificado de entidad de certificación subordinada en IoT Hub.

  4. Copie el certificado de dispositivo y las claves en el dispositivo de bajada. Para más información, consulte Administración de certificados de IoT Edge.

  5. Registre el dispositivo con IoT Hub para usar la autenticación firmada por entidad de certificación X.509. Para más información, consulte Creación y administración de identidades de dispositivo.

  6. En función de su lenguaje preferido, revise los ejemplos de cómo se puede hacer referencia a los certificados X. 509 en las aplicaciones de IoT:

Recuperación y modificación de la cadena de conexión

Después de crear una identidad de dispositivo IoT en el portal, obtenga su clave principal o secundaria. Agregue una de estas claves a la cadena de conexión que las aplicaciones usan para comunicarse con IoT Hub. Para la autenticación de clave simétrica, IoT Hub muestra la cadena de conexión completa en los detalles del dispositivo. Agregue la información del dispositivo de puerta de enlace a la cadena de conexión.

Una cadena de conexión para un dispositivo final necesita estas partes:

  • IoT Hub al que se conecta el dispositivo: Hostname=<Iot-Hub-Name>.azure-devices.net
  • El id. de dispositivo que se ha registrado con el centro: DeviceID=<Device-ID>
  • El método de autenticación, ya sea una clave simétrica o un certificado X.509.
    • Para la autenticación de clave simétrica, escriba la clave principal o secundaria: SharedAccessKey=<Key>
    • Para la autenticación de certificados X.509, proporcione una marca: x509=true
  • Dispositivo de puerta de enlace al que se conecta el dispositivo. Escriba el valor del nombre de host del archivo de configuración del dispositivo de puerta de enlace IoT Edge: GatewayHostName=<Gateway-Hostname>

Una cadena de conexión completa tiene este aspecto:

HostName=myiothub.azure-devices.net;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz;GatewayHostName=myGatewayDevice

O bien, para la autenticación de certificados X.509:

HostName=myiothub.azure-devices.net;DeviceId=myDownstreamDevice;x509=true;GatewayHostName=myGatewayDevice

Debido a la relación padre e hijo, puede simplificar la cadena de conexión utilizando directamente la puerta de enlace como host de conexión. Por ejemplo:

HostName=myGatewayDevice;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz

Use esta cadena de conexión modificada en el siguiente artículo de la serie de puertas de enlace transparentes.

Pasos siguientes

En este momento, tiene un dispositivo IoT Edge registrado en IoT Hub y lo ha configurado como puerta de enlace transparente. También tiene un dispositivo de bajada registrado en IoT Hub y apunta a su dispositivo de puerta de enlace.

A continuación, configure el dispositivo de bajada para confiar en el dispositivo de puerta de enlace y conectarse a él de forma segura. Continúe con el siguiente artículo de la serie de puertas de enlace transparentes: Conexión de un dispositivo de bajada a una puerta de enlace de Azure IoT Edge.