Compartir a través de


Creación y aprovisionamiento de dispositivos IoT Edge a escala en Linux mediante certificados X.509

Se aplica a:IoT Edge 1.5 checkmark IoT Edge 1.5

Importante

IoT Edge 1.5 LTS es la versión compatible. IoT Edge 1.4 LTS alcanzó el final del ciclo de vida el 12 de noviembre de 2024. Si usa una versión anterior, consulte Update IoT Edge.

En este artículo se proporcionan instrucciones paso a paso para el aprovisionamiento automático de uno o varios dispositivos linux IoT Edge mediante certificados X.509. Aprovisione automáticamente dispositivos Azure IoT Edge con el servicio de aprovisionamiento de dispositivos Azure IoT Hub (DPS). Si no está familiarizado con el aprovisionamiento automático, revise la visión general del aprovisionamiento antes de continuar.

Estos son los pasos para aprovisionar dispositivos IoT Edge mediante certificados X.509:

  1. Generar certificados y claves.
  2. Cree una inscripción individual para un único dispositivo o una inscripción de grupo para un conjunto de dispositivos.
  3. Instale el entorno de ejecución de IoT Edge y registre el dispositivo con IoT Hub.

Los certificados X.509 permiten escalar la producción y simplificar el aprovisionamiento de dispositivos. Normalmente, los certificados X.509 están organizados en una cadena de certificados de confianza. La cadena comienza con un certificado raíz autofirmado o de confianza, y cada certificado de la cadena firma el siguiente certificado inferior. Este patrón crea una cadena de confianza delegada desde el certificado raíz a través de cada certificado intermedio al certificado final de dispositivo de bajada instalado en un dispositivo.

Sugerencia

Si el dispositivo tiene un módulo de seguridad de hardware (HSM) como TPM 2.0, almacene las claves X.509 de forma segura en el HSM. Obtenga información sobre cómo implementar el aprovisionamiento sin intervención del usuario a escala con el ejemplo iotedge-tpm2cloud.

Requisitos previos

Recursos en la nube

  • Un centro de IoT activo.
  • Instancia del servicio de aprovisionamiento de dispositivos IoT Hub en Azure, vinculada con tu IoT Hub

Requisitos del dispositivo

Use un dispositivo físico o virtual Linux como dispositivo IoT Edge.

Generación de los certificados de identidad del dispositivo

El certificado de identidad del dispositivo es un certificado de dispositivo de nivel inferior que se conecta mediante una cadena de certificados de confianza con el certificado de la entidad de certificación X.509 (CA) superior. El nombre común (CN) del certificado de identidad del dispositivo debe estar establecido en el identificador de dispositivo que desea que el dispositivo tenga en su centro IoT.

Los certificados de identidad de dispositivo solo se usan para aprovisionar el dispositivo IoT Edge y autenticar el dispositivo con Azure IoT Hub. Estos certificados no son certificados de firma. Los certificados de autoridad de certificación que el dispositivo IoT Edge presenta a módulos o dispositivos de destino se usan para la verificación. Para obtener más información, consulte Azure IoT Edge detalles de uso de certificados.

Después de crear el certificado de identidad del dispositivo, tiene dos archivos: un archivo o con la parte pública del certificado y un archivo o con la clave privada. Si usa la inscripción de grupos en DPS, también necesita la parte pública de un certificado de entidad de certificación raíz o intermedio en la misma cadena de certificados de confianza.

Necesita estos archivos para configurar el aprovisionamiento automático con X.509:

  • El certificado de identidad del dispositivo y su certificado de clave privada. El certificado de identidad de dispositivo se carga en DPS si crea una inscripción individual. La clave privada se pasa al entorno de ejecución de IoT Edge.
  • Un certificado de cadena completa con al menos la identidad del dispositivo y los certificados intermedios. El certificado de cadena completa se pasa al entorno de ejecución de IoT Edge.
  • Un certificado intermedio o raíz de entidad de certificación de la cadena de certificados de confianza. Este certificado se carga en DPS si crea una inscripción de grupo.

Uso de certificados de prueba (opcional)

Si no tiene una entidad de certificación para crear nuevos certificados de identidad y desea probar este escenario, use los scripts del repositorio de git de Azure IoT Edge para generar certificados de prueba. Use estos certificados solo para pruebas de desarrollo. No los use en producción.

Para crear certificados de prueba, siga los pasos descritos en Crear certificados de demostración para probar las características de dispositivo IoT Edge. Complete las dos secciones necesarias para configurar los scripts de generación de certificados y crear un certificado de entidad de certificación raíz. A continuación, siga los pasos para crear un certificado de identidad del dispositivo. Cuando termine, tendrá el siguiente par de claves y cadena de certificados:

  • <WRKDIR>/certs/iot-edge-device-identity-<name>-full-chain.cert.pem
  • <WRKDIR>/private/iot-edge-device-identity-<name>.key.pem

Necesita ambos certificados en el dispositivo IoT Edge. Si usa la inscripción individual en DPS, cargue el archivo . Si usa la inscripción de grupos en DPS, cargue también un certificado de ENTIDAD de certificación raíz o intermedio en la misma cadena de certificados de confianza. Si utiliza certificados de demostración, use el certificado para el registro de grupos.

Crear una inscripción de DPS

Use los certificados y claves generados para crear una inscripción en DPS para uno o varios dispositivos IoT Edge.

Si quiere aprovisionar un único dispositivo IoT Edge, cree una inscripción individual. Si necesita aprovisionar varios dispositivos, siga los pasos para crear una inscripción de grupo de DPS.

Al crear una inscripción en DPS, tiene la oportunidad de declarar un Estado inicial de dispositivo gemelo. En el dispositivo gemelo, puede establecer etiquetas para agrupar dispositivos por cualquier métrica que necesite en su solución, como la región, el entorno, la ubicación o el tipo de dispositivo. Estas etiquetas se usan para crear implementaciones automáticas.

Para más información sobre las inscripciones en Device Provisioning Service, vea Administración de inscripciones de dispositivos.

  • Inscripción individual
  • Inscripción de grupo

Creación de una inscripción individual de DPS

Las inscripciones individuales usan la parte pública del certificado de identidad de un dispositivo y la asocian con el certificado del dispositivo.

Sugerencia

Los pasos de este artículo son para el portal de Azure, pero también puede crear inscripciones individuales mediante el Azure CLI. Para obtener más información, consulte az iot dps enrollment. Como parte del comando de la CLI, use la marca edge-enabled para especificar que la inscripción es para un dispositivo IoT Edge.

  1. En el portal Azure, vaya a su instancia del servicio de aprovisionamiento de dispositivos de IoT Hub.

  2. En Configuración, seleccione Administrar inscripciones.

  3. Seleccione Add individual enrollment (Agregar inscripción individual) y, a continuación, complete los pasos siguientes para configurar la inscripción:

    • Mecanismo: Seleccione X.509.

    • Archivo de certificado principal .pem o .cer: cargue el archivo público del certificado de identidad del dispositivo. Si usó los scripts para generar un certificado de prueba, elija el siguiente archivo:

      <WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem

    • IoT Hub Id. de dispositivo: proporcione un identificador para el dispositivo si lo desea. Puede usar identificadores de dispositivo para orientar un dispositivo individual para el despliegue del módulo. Si no especifica un id. de dispositivo, se usa el nombre común (CN) en el certificado X. 509.

    • IoT Edge dispositivo: seleccione True para declarar que la inscripción es para un dispositivo IoT Edge.

    • Seleccione los centros de IoT a los que se puede asignar este dispositivo: elija la instancia de IoT Hub vinculada a la que quiere conectar el dispositivo. Puede elegir varios centros y el dispositivo se asignará a uno de ellos según la directiva de asignación seleccionada.

    • Estado inicial de dispositivo gemelo: agregue un valor de etiqueta para que se agregue al dispositivo gemelo, si lo desea. Puede usar etiquetas para dirigir acciones hacia grupos de dispositivos para su implementación automática. Por ejemplo:

      {
          "tags": {
             "environment": "test"
          },
          "properties": {
             "desired": {}
          }
      }
      
  4. Haga clic en Guardar.

En Administrar inscripciones, puede ver el Id. de registro de la inscripción que acaba de crear. Anótelo, ya que puede usarlo para configurar su dispositivo.

Ahora que existe una inscripción para este dispositivo, el entorno de ejecución de Azure IoT Edge puede aprovisionar automáticamente el dispositivo durante la instalación.

Instalar IoT Edge

En esta sección, preparará la máquina virtual Linux o el dispositivo físico para IoT Edge. A continuación, instale IoT Edge.

Ejecute los comandos siguientes para agregar el repositorio de paquetes y luego agregue la clave de firma de paquetes de Microsoft a la lista de claves de confianza.

Importante

El 30 de junio de 2022, Raspberry Pi OS Stretch se retiró de la lista de soporte técnico del sistema operativo de nivel 1. Para evitar posibles vulnerabilidades de seguridad, actualice el sistema operativo host a Bullseye.

Para sistemas operativos de plataforma compatibles de nivel 2, los paquetes de instalación están disponibles en lanzamientos de Azure IoT Edge. Consulte los pasos de instalación en Instalación sin conexión o instalación de versión específica (opcional).

  • Ubuntu
  • Debian
  • Red Hat Enterprise Linux
  • Snaps de Ubuntu Core

Puede instalar IoT Edge mediante algunos comandos. Abra un terminal y ejecute los comandos siguientes:

  • 24.04:

    wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 22.04:

    wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 20.04:

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

Para obtener más información sobre las versiones del sistema operativo, consulte Azure IoT Edge plataformas compatibles.

Nota:

Azure IoT Edge paquetes de software están sujetos a los términos de licencia ubicados en cada paquete (usr/share/doc/{package-name} o el directorio LICENSE). Lea los términos de licencia antes de usar un paquete. La instalación y el uso de un paquete constituyen la aceptación de estos términos. Si no acepta los términos de licencia, no utilice ese paquete.

Instalación de un motor del contenedor

Azure IoT Edge se basa en un entorno de ejecución de contenedores compatible con OCI. Para escenarios de producción, use el motor Moby. El motor moby es el motor de contenedor compatible oficialmente con IoT Edge. Las imágenes de contenedor de Docker CE y Docker EE funcionan con el entorno de ejecución de Moby. Si usa los snaps de Ubuntu Core, Canonical proporciona el snap de Docker y lo soporta para escenarios de producción.

  • Ubuntu
  • Debian
  • Red Hat Enterprise Linux
  • Snaps de Ubuntu Core

Instale el motor de Moby.

sudo apt-get update; \
  sudo apt-get install moby-engine

De manera predeterminada, el motor del contenedor no establece límites de tamaño de registro de contenedor. Con el tiempo, esta situación puede provocar que el dispositivo se rellene con registros y se agote el espacio en disco. Sin embargo, puede configurar el registro para que se muestre localmente, aunque es opcional. Para obtener más información sobre la configuración de registro, consulte Prepare para implementar la solución de IoT Edge en producción.

En los pasos siguientes se muestra cómo configurar el contenedor para usar el controlador de registro como mecanismo de registro.

  • Ubuntu / Debian / RHEL
  • Snaps de Ubuntu Core
  1. Cree o edite el archivo de configuración de demonios de Docker existente:

    sudo nano /etc/docker/daemon.json
    
  2. Establezca el controlador de registro predeterminado en el controlador de registro , tal como se muestra en el ejemplo:

       {
          "log-driver": "local"
       }
    
  3. Reinicie el motor de contenedores para que se apliquen los cambios.

    sudo systemctl restart docker
    

Instalación del entorno de ejecución de IoT Edge

El servicio IoT Edge proporciona y mantiene estándares de seguridad en el dispositivo IoT Edge. El servicio se inicia en cada arranque y arranca el dispositivo iniciando el resto del tiempo de ejecución de IoT Edge.

Nota:

A partir de la versión 1.2, el servicio de identidad Azure IoT controla el aprovisionamiento y la administración de identidades para IoT Edge y para otros componentes de dispositivo que necesitan comunicarse con IoT Hub.

Los pasos de esta sección representan el proceso típico para instalar la versión de IoT Edge más reciente en un dispositivo que tenga conexión a Internet. Si necesita instalar una versión específica, como una versión preliminar, o debe instalarse mientras está sin conexión, siga los pasos de instalación de la versión sin conexión o específica más adelante en este artículo.

Sugerencia

Si ya tiene un dispositivo IoT Edge que ejecuta una versión anterior y quiere actualizar a la versión más reciente, siga los pasos descritos en Update IoT Edge. Las versiones posteriores son lo suficientemente diferentes de las versiones anteriores de IoT Edge que son necesarios pasos específicos para actualizar.

  • Ubuntu
  • Debian
  • Red Hat Enterprise Linux
  • Snaps de Ubuntu Core

Instale la versión más reciente de IoT Edge y el paquete del servicio de identidad de IoT (si aún no está up-to-date):

  • 22.04:

    sudo apt-get update; \
       sudo apt-get install aziot-edge
    
  • 20.04:

    sudo apt-get update; \
       sudo apt-get install aziot-edge
    

Aprovisionamiento del dispositivo con su identidad de nube

Después de instalar el entorno de ejecución en el dispositivo, configure el dispositivo con la información que usa para conectarse al servicio de aprovisionamiento de dispositivos y IoT Hub.

Asegúrese de que tiene la siguiente información:

  • El valor de Ámbito de id. del DPS. Obtenga este valor en la página de información general de la instancia de DPS en el portal de Azure.
  • El archivo de cadena de certificados de identidad del dispositivo.
  • El archivo de clave de identidad del dispositivo en el dispositivo.

Cree un archivo de configuración para el dispositivo en función del archivo de plantilla que se incluya con la instalación de IoT Edge.

  • Ubuntu / Debian / RHEL
  • Snaps de Ubuntu Core
sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml

Abra el archivo de configuración en el dispositivo IoT Edge.

sudo nano /etc/aziot/config.toml

Busque la sección Provisioning del archivo. Quite la marca de comentario de las líneas para el aprovisionamiento de DPS con certificado X.509 y asegúrese de que todas las demás líneas de aprovisionamiento estén comentadas.

# DPS provisioning with X.509 certificate
[provisioning]
source = "dps"
global_endpoint = "https://global.azure-devices-provisioning.net"
id_scope = "SCOPE_ID_HERE"

# Uncomment to send a custom payload during DPS registration
# payload = { uri = "PATH_TO_JSON_FILE" }

[provisioning.attestation]
method = "x509"
registration_id = "REGISTRATION_ID_HERE"

identity_cert = "DEVICE_IDENTITY_CERTIFICATE_HERE" # For example, "file:///var/aziot/device-id.pem"
identity_pk = "DEVICE_IDENTITY_PRIVATE_KEY_HERE"   # For example, "file:///var/aziot/device-id.key"

# auto_reprovisioning_mode = Dynamic
  1. Actualice el valor de con el ID de ámbito que copió de la instancia de DPS.

  2. Escriba un registration_id para el dispositivo, que es el identificador que tiene el dispositivo en IoT Hub. El identificador de registro debe coincidir con el nombre común (CN) del certificado de identidad.

  3. Actualice los valores de y con la información del certificado y la clave.

    Puede proporcionar el valor del certificado de identidad como un URI de archivo, o bien se puede emitir dinámicamente mediante EST o una entidad de certificación local. Quite la marca de comentario solo una línea, en función del formato que use.

    Puede proporcionar el valor de clave privada de identidad como un URI de archivo o un URI PKCS#11. Quite la marca de comentario solo una línea, en función del formato que use.

    Si usa algún URI PKCS#11, busque la sección PKCS#11 en el archivo de configuración y escriba la información de configuración de PKCS#11.

    Para obtener más información sobre los certificados, consulte Administrar certificados IoT Edge.

    Para obtener más información sobre las opciones de configuración de aprovisionamiento, consulte Configurar la configuración del dispositivo IoT Edge.

  4. Opcionalmente, busque la sección del modo de reaprovisionamiento automático del archivo. Use el parámetro para configurar el comportamiento de reaprovisionamiento del dispositivo. Dinámico: reaprovisionar cuando el dispositivo detecte que podría haberse movido de un IoT Hub a otro. Este es el valor predeterminado. AlwaysOnStartup: volver a aprovisionar cuando se reinicia el dispositivo o un bloqueo hace que los daemons se reinicien. OnErrorOnly: el reaprovisionamiento del dispositivo nunca se desencadena automáticamente. Cada modo tiene una reserva de reaprovisionamiento de dispositivo implícita si este no puede conectarse a IoT Hub durante el aprovisionamiento de identidades debido a errores de conectividad. Para obtener más información, consulte conceptos de reaprovisionamiento de dispositivos de IoT Hub.

  5. Opcionalmente, descomente el parámetro para especificar la ruta de acceso a un archivo JSON local. El contenido del archivo se envía a DPS como datos adicionales cuando el dispositivo se registra. Esto es útil para la asignación personalizada. Por ejemplo, si desea asignar los dispositivos en función de un identificador de modelo de IoT Plug and Play sin intervención humana.

  6. Guarde y cierre el archivo.

Aplique los cambios de configuración realizados en IoT Edge.

  • Ubuntu / Debian / RHEL
  • Snaps de Ubuntu Core
sudo iotedge config apply

Comprobación de instalación correcta

Si el tiempo de ejecución se inicia correctamente, dirígete a tu IoT Hub e inicia la implementación de módulos IoT Edge en tu dispositivo.

  • Inscripción individual
  • Inscripción de grupo

Compruebe que se usa la inscripción individual que creó en el servicio de aprovisionamiento de dispositivos. Vaya a la instancia del servicio de aprovisionamiento de dispositivos en el portal de Azure. Abra los detalles de la inscripción para la inscripción individual que ha creado. El estado de la inscripción está asignado y se muestra el id. de dispositivo.

Ejecute estos comandos en el dispositivo para comprobar que IoT Edge está instalado y en ejecución.

Compruebe el estado del servicio IoT Edge.

sudo iotedge system status

Vea los registros de servicio.

sudo iotedge system logs

Enumere los módulos en ejecución.

sudo iotedge list

Pasos siguientes

El proceso de inscripción del servicio de aprovisionamiento de dispositivos le permite establecer el identificador de dispositivo y las etiquetas de dispositivo gemelo al aprovisionar un nuevo dispositivo. Use estos valores para dirigirse a dispositivos individuales o grupos de dispositivos con la administración automática de dispositivos. Obtenga información sobre cómo implementar y supervisar IoT Edge módulos a escala mediante el portal de Azure o usando Azure CLI.