Creación y aprovisionamiento de un dispositivo IoT Edge para Linux en Windows con certificados X.509

Se aplica a:IoT Edge 1.4 checkmark IoT Edge 1.4

Importante

IoT Edge 1.4 es la versión admitida. Si está usando una versión anterior, consulte Actualización de IoT Edge.

En este artículo se proporcionan instrucciones completas para registrar y aprovisionar un dispositivo IoT Edge para Linux en Windows.

Todos los dispositivos que se conectan a IoT Hub tienen un identificador de dispositivo que se usa para realizar un seguimiento de las comunicaciones de la nube al dispositivo o del dispositivo a la nube. Configure un dispositivo con su información de conexión, que incluye el nombre de host del centro de IoT, el identificador de dispositivo y la información que el dispositivo usa para autenticarse en IoT Hub.

Los pasos de este artículo le guían a través de un proceso denominado aprovisionamiento manual, donde conecta un único dispositivo a su centro de IoT. En el caso del aprovisionamiento manual, tiene dos opciones para autenticar dispositivos IoT Edge:

  • Claves simétricas: cuando se crea una identidad de dispositivo en IoT Hub, el servicio crea dos claves. Debe colocar una de las claves en el dispositivo para que este la presente a IoT Hub al autenticarse.

    Este método de autenticación es más rápido para comenzar, pero no es tan seguro.

  • X.509 autofirmado: se crean dos certificados de identidad X.509 y se colocan en el dispositivo. Cuando se crea una nueva identidad de dispositivo en IoT Hub, se proporcionan huellas digitales de ambos certificados. Cuando el dispositivo se autentica en IoT Hub, presenta un certificado, y IoT Hub comprueba que el certificado coincide con su huella digital.

    Este método de autenticación es más seguro y se recomienda para los escenarios de producción.

En este artículo se describe el uso de certificados X.509 como método de autenticación. Si quiere usar claves simétricas, consulte Creación y aprovisionamiento de un dispositivo IoT Edge para Linux en Windows con claves simétricas.

Nota:

Si tiene muchos dispositivos para configurar y no quiere aprovisionar manualmente cada uno, siga uno de los artículos a continuación para obtener información sobre cómo funciona IoT Edge con IoT Hub Device Provisioning Service:

Requisitos previos

En este artículo se explica cómo registrar un dispositivo IoT Edge e instalar IoT Edge para Linux en Windows. Estas tareas tienen requisitos previos y utilidades diferentes que se usan para realizarlas. Asegúrese de que cumple todos los requisitos previos antes de continuar.

Herramientas de administración de dispositivos

Puede usar Azure Portal, Visual Studio Code o la CLI de Azure para seguir los pasos para registrar el dispositivo. Cada utilidad tiene sus propios requisitos previos o puede que deban instalarse:

Un centro de IoT gratuito o estándar en la suscripción de Azure.

Requisitos del dispositivo

Un dispositivo Windows con los siguientes requisitos mínimos:

  • Requisitos del sistema

    • Windows 101/11 (Pro, Enterprise, IoT Enterprise)
    • Windows Server 20191/2022
      1 Windows 10 y Windows Server 2019, compilación mínima 17763 con todas las actualizaciones acumulativas actuales instaladas.
  • Requisitos de hardware

    • Memoria libre mínima: 1 GB
    • Espacio libre en disco mínimo: 10 GB
  • Compatibilidad con la virtualización

  • Soporte de red

    • Windows Server no incluye un conmutador predeterminado. Para poder implementar EFLOW en un dispositivo Windows Server, debe crear un conmutador virtual. Para obtener más información, consulte Creación de un conmutador virtual para Linux en Windows.
    • Las versiones de escritorio de Windows incluyen un conmutador predeterminado que se puede usar para la instalación de EFLOW. Si es necesario, puede crear su propio conmutador virtual personalizado.

Sugerencia

Si quiere usar módulos de Linux con aceleración por GPU en la implementación de Azure IoT Edge para Linux en Windows, debe tener en cuenta varias opciones de configuración.

Tendrá que instalar los controladores correctos en función de la arquitectura de GPU y es posible que necesite acceder a una compilación del programa Windows Insider. Para determinar sus necesidades de configuración y cumplir estos requisitos previos, consulte Aceleración por GPU para Azure IoT Edge para Linux en Windows.

Asegúrese de que se toma el tiempo necesario para cumplir los requisitos previos para la aceleración de GPU. Deberá reiniciar el proceso de instalación si decide realizar aceleración de GPU durante la instalación.

Herramientas para desarrolladores

Prepare el dispositivo de destino para la instalación de Azure IoT Edge para Linux en Windows y la implementación de la máquina virtual Linux:

  1. Establezca la directiva de ejecución en el dispositivo de destino en AllSigned. Puede comprobar la directiva de ejecución actual en un símbolo del sistema de PowerShell con privilegios elevados con el siguiente comando:

    Get-ExecutionPolicy -List
    

    Si la directiva de ejecución de local machine no es AllSigned, puede establecer la directiva de ejecución con el siguiente comando:

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

Para obtener más información sobre el módulo de PowerShell de Azure IoT Edge para Linux en Windows, consulte la referencia de funciones de PowerShell.

Generación de los certificados de identidad del dispositivo

El aprovisionamiento manual con certificados X.509 requiere IoT Edge, versión 1.0.10 o posterior.

Al aprovisionar un dispositivo IoT Edge con certificados X.509, se usa lo que se denomina un certificado de identidad del dispositivo. Este certificado solo se usa para aprovisionar un dispositivo IoT Edge y autenticarlo en Azure IoT Hub. Es un certificado de hoja que no firma otros certificados. El certificado de identidad del dispositivo es independiente de los certificados de la entidad de certificación (CA) que el dispositivo IoT Edge presenta a los módulos o dispositivos de nivel inferior para la verificación.

En el caso de la autenticación mediante certificados X.509, la información de autenticación de cada dispositivo se proporciona en forma de huellas digitales tomadas de los certificados de identidad del dispositivo. Estas huellas digitales se proporcionan a IoT Hub en el momento de registrar el dispositivo para que el servicio pueda reconocer el dispositivo al conectarse.

Para obtener más información sobre cómo se usan los certificados de CA en los dispositivos IoT Edge, consulte Información sobre los certificados de Azure IoT Edge.

Necesita los siguientes archivos para el aprovisionamiento manual con X.509:

  • Dos certificados de identidad del dispositivo con sus certificados de clave privada coincidentes en los formatos .cer o .pem. Necesita dos certificados de identidad del dispositivo para la rotación de certificados. Como procedimiento recomendado, prepare dos certificados de identidad del dispositivo diferentes con fechas de expiración diferentes. Si un certificado expira, el otro sigue siendo válido y le da tiempo para rotar el certificado expirado.

    Se proporciona un conjunto de archivos de certificado y clave al entorno de ejecución de IoT Edge. Al crear los certificados de identidad del dispositivo, establezca el nombre común del certificado (CN) en el id. de dispositivo que quiere que tenga el dispositivo en el centro de IoT.

  • Huellas digitales tomadas de ambos certificados de identidad del dispositivo. IoT Hub requiere dos huellas digitales al registrar un dispositivo IoT Edge. Solo puede usar un certificado para el registro. Para usar un solo certificado, establezca la misma huella digital de certificado para las huellas digitales principal y secundaria al registrar el dispositivo.

    Los valores de huella digital son 40 caracteres hexadecimales para hashes de tipo SHA-1 o 64 caracteres hexadecimales para hashes de tipo SHA-256. Ambas huellas digitales se proporcionan a IoT Hub en el momento del registro del dispositivo.

    Una manera de recuperar la huella digital de un certificado es con el siguiente comando openssl:

    openssl x509 -in <certificate filename>.pem -text -fingerprint
    

    La huella digital se incluye en la salida de este comando. Por ejemplo:

    SHA1 Fingerprint=D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12
    

Si no tiene certificados disponibles, puede proceder a la Creación de certificados de demostración para probar las características de dispositivo IoT Edge. Siga las instrucciones de ese artículo para configurar scripts de creación de certificados, crear un certificado de CA raíz y luego crear dos certificados de identidad de dispositivo IoT Edge. Con fines de prueba, puede crear un único certificado de identidad de dispositivo y usar la misma huella digital para los valores de huella digital principal y secundario al registrar el dispositivo en IoT Hub.

Registro del dispositivo

Puede usar Azure Portal, Visual Studio Code o la CLI de Azure para registrar el dispositivo, según su preferencia.

En su centro de IoT en Azure Portal, los dispositivos IoT Edge se crean y administran por separado de los dispositivos IoT que no están habilitados para Edge.

  1. Inicie sesión en Azure Portal y vaya a IoT Hub.

  2. En el panel izquierdo, seleccione Dispositivos en el menú y, luego, elija Agregar dispositivo.

  3. En la página Crear un dispositivo, proporcione la información siguiente:

    • Cree un id. de dispositivo descriptivo. Anote este identificador de dispositivo, ya que lo usará más adelante.
    • Active la casilla Dispositivo IoT Edge.
    • Seleccione X.509 autofirmado como el tipo de autenticación.
    • Proporcione las huellas digitales de certificado de identidad principal y secundaria. Los valores de huella digital son 40 caracteres hexadecimales para hashes de tipo SHA-1 o 64 caracteres hexadecimales para hashes de tipo SHA-256. Azure Portal solo admite valores hexadecimales. Quite los separadores de columna y los espacios de los valores de huella digital antes de escribirlos en el portal. Por ejemplo, D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12 se escribe como D268D9049F1A4D6AFD8477687BC633C032375112.

    Sugerencia

    Si está probando y desea usar un certificado, puede usar el mismo certificado para las huellas digitales principal y secundaria.

  4. Seleccione Guardar.

Ahora que tiene un dispositivo registrado en IoT Hub, recupere la información que usa para completar la instalación y el aprovisionamiento del entorno de ejecución de Azure IoT Edge.

Visualización de dispositivos registrados y recuperación de la información de aprovisionamiento

Los dispositivos que usan la autenticación con certificados X.509 necesitan el nombre de su centro de IoT, su nombre de dispositivo y sus archivos de certificado para completar la instalación y el aprovisionamiento del entorno de ejecución de Azure IoT Edge.

Todos los dispositivos habilitados para Edge que se conectan al centro de IoT se enumeran en la página Dispositivos. Puede filtrar la lista por el tipo de dispositivo Dispositivo IoT Edge.

Instalación de IoT Edge

Implemente Azure IoT Edge para Linux en Windows en el dispositivo de destino.

Nota:

En el siguiente proceso de PowerShell se muestra cómo implementar IoT Edge para Linux en Windows en el dispositivo local. Si quiere realizar la implementación en un dispositivo de destino remoto mediante PowerShell, puede usar PowerShell remoto para establecer una conexión a un dispositivo remoto y ejecutar estos comandos de manera remota en ese dispositivo.

  1. En una sesión de PowerShell con privilegios elevados, ejecute cualquiera de los siguientes comandos en función de la arquitectura del dispositivo de destino para descargar IoT Edge para Linux o Windows.

    • X64/AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
      
  2. Instale IoT Edge para Linux en Windows en el dispositivo.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    

    Para especificar la instalación personalizada de IoT Edge para Linux en Windows y los directorios VHDX, agregue los parámetros INSTALLDIR="<FULLY_QUALIFIED_PATH>" y VHDXDIR="<FULLY_QUALIFIED_PATH>" al comando de instalación. Por ejemplo, si quiere usar la carpeta D:\EFLOW para la instalación y la carpeta D:\EFLOW-VHDX para el VHDX, puede usar el siguiente cmdlet de PowerShell.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
    
  3. Establezca la directiva de ejecución en el dispositivo de destino en AllSigned si todavía no lo está. Consulte los requisitos previos de PowerShell para los comandos a fin de comprobar la directiva de ejecución actual y establecer la directiva de ejecución en AllSigned.

  4. Creación de la implementación de IoT Edge para Linux en Windows. La implementación crea la máquina virtual Linux e instala el entorno de ejecución de IoT Edge de forma automática.

    Deploy-Eflow
    

    Sugerencia

    De forma predeterminada, el comando Deploy-Eflow crea la máquina virtual Linux con 1 GB de RAM, 1 núcleo de vCPU y 16 GB de espacio en disco. Sin embargo, los recursos que necesita la máquina virtual dependen en gran medida de las cargas de trabajo que implemente. Si la máquina virtual no tiene memoria suficiente para dar servicio a las cargas de trabajo, no se iniciará.

    Puede personalizar los recursos disponibles de la máquina virtual mediante los parámetros opcionales del comando Deploy-Eflow. Esto es necesario para implementar EFLOW en un dispositivo con los requisitos mínimos de hardware.

    Por ejemplo, el comando siguiente crea una máquina virtual con 1 núcleo de vCPU, 1 GB de RAM (representados en MB) y 2 GB de espacio en disco:

    Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
    

    Para obtener información sobre todos los parámetros opcionales disponibles, vea Funciones de PowerShell para IoT Edge para Linux en Windows.

    Advertencia

    De forma predeterminada, la máquina virtual Linux EFLOW no tiene configuración de DNS. Las implementaciones que usan DHCP intentarán obtener la configuración de DNS propagada por el servidor DHCP. Compruebe la configuración de DNS para garantizar la conectividad a Internet. Para más información, consulte AzEFLOW-DNS.

    Puede asignar una GPU a la implementación para habilitar módulos de Linux con aceleración por GPU. Para obtener acceso a estas características, deberá instalar los requisitos previos detallados en Aceleración por GPU para Azure IoT Edge para Linux en Windows.

    Para usar un acceso directo de GPU, agregue los parámetros gpuName, gpuPassthroughType y gpuCount a su comando Deploy-Eflow. Para obtener información sobre todos los parámetros opcionales disponibles, vea Funciones de PowerShell para IoT Edge para Linux en Windows.

    Advertencia

    La habilitación del acceso directo de dispositivos de hardware puede aumentar los riesgos de seguridad. Microsoft recomienda usar un controlador de mitigación de dispositivos del proveedor de GPU, si procede. Para obtener más información, vea Implementación de dispositivos gráficos mediante la asignación discreta de dispositivos.

  5. Escriba "Y" para aceptar los términos de licencia.

  6. Escriba "O" o "R" para activar o desactivar la opción Datos de diagnóstico opcionales en función de sus preferencias.

  7. Una vez completada la implementación, la ventana de PowerShell indica Implementación correcta.

    A successful deployment will say 'Deployment successful' at the end of the messages, PNG.

    Después de una implementación correcta, está listo para aprovisionar el dispositivo.

Aprovisionamiento del dispositivo con su identidad de nube

Ya está listo para configurar el dispositivo con su identidad en la nube y la información de autenticación.

Para aprovisionar el dispositivo mediante certificados X.509, necesitará el nombre del centro de IoT, el id. de dispositivo, y las rutas de acceso absolutas al certificado de identidad y la clave privada en el equipo host Windows.

Tenga listo el certificado de identidad del dispositivo y su clave privada correspondiente en el dispositivo de destino. Disponga de la ruta de acceso absoluta a ambos archivos.

Ejecute el siguiente comando en una sesión de PowerShell con privilegios elevados en el dispositivo de destino. Reemplace el texto de marcador de posición por sus valores propios.

Provision-EflowVm -provisioningType ManualX509 -iotHubHostname "HUB_HOSTNAME_HERE" -deviceId "DEVICE_ID_HERE" -identityCertPath "ABSOLUTE_PATH_TO_IDENTITY_CERT_HERE" -identityPrivKeyPath "ABSOLUTE_PATH_TO_PRIVATE_KEY_HERE"

Para obtener más información sobre el comando Provision-EflowVM, vea Funciones de PowerShell para IoT Edge para Linux en Windows.

Comprobación de configuración correcta

Compruebe que IoT Edge para Linux en Windows se haya instalado y configurado correctamente en el dispositivo de IoT Edge.

  1. Inicie sesión en la instancia de IoT Edge para Linux en la máquina virtual Windows con el siguiente comando en la sesión de PowerShell:

    Connect-EflowVm
    

    Nota:

    La única cuenta que se permite a SSH en la máquina virtual es la del usuario que la creó.

  2. Una vez que haya iniciado sesión, puede comprobar la lista de módulos de IoT Edge en ejecución con el comando de Linux siguiente:

    sudo iotedge list
    
  3. Si tiene que solucionar problemas del servicio IoT Edge, use los siguientes comandos de Linux.

    1. Recupere los registros de servicio.

      sudo iotedge system logs
      
    2. Use la herramienta check para comprobar el estado de configuración y conexión del dispositivo.

      sudo iotedge check
      

    Nota:

    En un dispositivo recién aprovisionado, es posible que vea un error relacionado con IoT Edge Hub:

    × preparación para producción: el directorio de almacenamiento de Edge Hub se conserva en el sistema de archivos host: error

    No se pudo comprobar el estado actual del contenedor de Edge Hub

    Este error se espera en un dispositivo recién aprovisionado porque el módulo de IoT Edge Hub no se está ejecutando. Para resolver el error, en IoT Hub, establezca los módulos del dispositivo y cree una implementación. La creación de una implementación para el dispositivo inicia los módulos en el dispositivo, incluido el módulo de IoT Edge Hub.

Al crear un nuevo dispositivo IoT Edge, se mostrará el código de estado 417 -- The device's deployment configuration is not set en Azure Portal. Este estado es normal y significa que el dispositivo está listo para recibir una implementación de módulo.

Desinstalación de IoT Edge para Linux en Windows

Si quiere desinstalar Azure IoT Edge para Linux en Windows de su dispositivo, siga estos pasos.

  1. Abrir la configuración en Windows
  2. Seleccione Agregar o quitar programas.
  3. Seleccione la aplicación Azure IoT Edge.
  4. Seleccione Desinstalar.

Pasos siguientes