Compartir a través de


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

Se aplica a:icono de confirmación IoT Edge 1.1

Importante

La fecha de finalización del soporte técnico de IoT Edge 1.1 fue el 13 de diciembre de 2022. Compruebe el ciclo de vida del producto de Microsoft para obtener información sobre cómo se admite este producto, servicio, tecnología o API. Para más información sobre cómo actualizar a la versión más reciente de IoT Edge, consulte Actualización de IoT Edge.

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

Nota:

Azure IoT Edge con contenedores de Windows no se admitirá a partir de la versión 1.2 de Azure IoT Edge.

Considere la posibilidad de usar el nuevo método para ejecutar IoT Edge en dispositivos Windows, Azure IoT Edge para Linux en Windows.

Si quiere usar Azure IoT Edge para Linux en Windows, puede seguir los pasos descritos en la guía de procedimientos equivalente de .

Las tareas son las siguientes:

  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. Instalar el entorno de ejecución de IoT Edge y registrar el dispositivo con IoT Hub.

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. Normalmente, los certificados X.509 están organizados en una cadena de certificados de confianza. Comenzando por un certificado raíz de confianza o autofirmado, cada certificado de la cadena firma al certificado inmediatamente inferior. Este patrón crea una cadena delegada de confianza desde el certificado raíz mediante todos los certificados intermedios hasta el certificado de dispositivo de nivel inferior instalado en un dispositivo.

Prerrequisitos

Recursos en la nube

Requisitos del dispositivo

Un dispositivo físico o virtual con Windows que funcione como el 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 certificado de identidad del dispositivo debe tener su nombre común (CN) establecido en el ID de dispositivo que desea que el dispositivo tenga en su IoT Hub.

Los certificados de identidad del dispositivo solo se usan para aprovisionar al dispositivo IoT Edge y autenticarlo con Azure IoT Hub. No son certificados de firma, a diferencia de los certificados de CA que el dispositivo IoT Edge presenta a los módulos o los dispositivos de nivel inferior para la comprobación. Para más información, consulte Detalles de uso de certificados de Azure IoT Edge.

Después de crear el certificado de identidad del dispositivo, debe tener dos archivos: un archivo. cer o. pem que contiene la parte pública del certificado y un archivo. cer o. pem con la clave privada del certificado. Si planea usar una inscripción de grupo en DPS, también necesitará la parte pública de un certificado de CA raíz o intermedio en la misma cadena de certificados de confianza.

Necesita los siguientes 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 Azure IoT Edge.
  • Una cadena de certificados completa, que debe contener al menos la identidad del dispositivo y los certificados intermedios. La cadena de certificados completa se pasa al entorno de ejecución de Azure IoT Edge.
  • Un certificado CA intermedio o raíz de la cadena de certificados de confianza. Este certificado se carga en DPS si crea una inscripción de grupo.

Nota:

Actualmente, una limitación en libiothsm impide el uso de certificados que expiran el 1 de enero de 2038 o en una fecha posterior.

Uso de certificados de prueba (opcional)

Si no tiene una entidad de certificación disponible para crear nuevos certificados de identidad y quiere probar este escenario, el repositorio de Git de Azure IoT Edge contiene scripts que puede usar para generar certificados de prueba. Estos certificados están diseñados solo para pruebas de desarrollo y no deben usarse en producción.

Para crear certificados de prueba, siga los pasos descritos en Creación de certificados de demostración para probar las características del dispositivo IoT Edge. Complete las dos secciones necesarias para configurar los scripts de generación de certificados y crear un certificado de CA raíz. A continuación, siga los pasos para crear un certificado de identidad del dispositivo. Cuando haya terminado, debe tener la cadena de certificados y el par de claves siguientes:

  • <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 va a usar la inscripción individual en DPS, cargará el archivo .cert.pem. Si va a usar la inscripción de grupos en DPS, también necesitará un certificado de CA raíz o intermedio en la misma cadena de certificados de confianza que se va a cargar. Si usa certificados de demostración, use el certificado <WRKDIR>\certs\azure-iot-test-only.root.ca.cert.pem para la inscripción de grupos.

Crear una inscripción de DPS

Use las claves y los certificados 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 varios dispositivos aprovisionados, 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 de dispositivo gemelo inicial. 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 obtener más información sobre las inscripciones en el servicio de aprovisionamiento de dispositivos, consulte Administración de inscripciones de dispositivos.

Crear una inscripción individual de DPS

Las inscripciones individuales toman la sección pública del certificado de identidad del dispositivo y la asocian con el certificado del dispositivo.

Sugerencia

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

  1. En Azure Portal, vaya a la instancia del servicio de aprovisionamiento de dispositivos de IoT Hub.

  2. En Configuración, seleccione Administrar inscripciones.

  3. Seleccione Agregar inscripción individual y complete los pasos siguientes para configurar la inscripción:

    • Mecanismo: seleccione X.509.

    • Archivo .pem o .cer de certificado principal: cargue el archivo público desde el 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

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

    • Dispositivo IoT Edge: 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 el centro de IoT vinculado al que desea 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 del dispositivo gemelo: agregue un valor de etiqueta que se agregará al dispositivo gemelo si lo desea. Puede usar etiquetas para dirigir grupos de dispositivos para la implementación automática. Por ejemplo:

      {
          "tags": {
             "environment": "test"
          },
          "properties": {
             "desired": {}
          }
      }
      
  4. Seleccione Guardar.

En Administrar inscripciones, puede ver el identificador 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.

Instalación de IoT Edge

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

Azure IoT Edge se basa en un entorno de ejecución de contenedor compatible con OCI. Moby, un motor basado en Moby, se incluye en el script de instalación, lo que significa que no hay pasos adicionales para instalar el motor.

Para instalar el entorno de ejecución de IoT Edge:

  1. Ejecute PowerShell como administrador.

    Use una sesión AMD64 de PowerShell, no PowerShell(x86). Si no está seguro del tipo de sesión que está usando, ejecute el siguiente comando:

    (Get-Process -Id $PID).StartInfo.EnvironmentVariables["PROCESSOR_ARCHITECTURE"]
    
  2. Ejecute el comando Deploy-IoTEdge , que realiza las tareas siguientes:

    • Comprueba que la máquina Windows está en una versión compatible
    • Activa la función de contenedores
    • Descarga el motor moby y el entorno de ejecución de IoT Edge
    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Deploy-IoTEdge
    
  3. Reinicie el dispositivo si se le solicita.

Al instalar IoT Edge en un dispositivo, puede usar parámetros adicionales para modificar el proceso, entre los que se incluyen:

  • Dirigir el tráfico para pasar por un servidor proxy
  • Apuntar el instalador a un directorio local para la instalación sin conexión

Para obtener más información sobre estos parámetros adicionales, consulte scripts de PowerShell para IoT Edge con contenedores de Windows.

Aprovisionamiento del dispositivo con su identidad de nube

Una vez que el entorno de ejecución esté instalado en el dispositivo, configure el dispositivo con la información que usa para conectarse a Device Provisioning Service y a IoT Hub.

Tenga lista la siguiente información:

  • Valor de ID Scope de DPS. Puede recuperar este valor de la página Información general de la instancia de DPS en Azure Portal.
  • El archivo de cadena de certificados de identidad del dispositivo en el dispositivo.
  • El archivo de clave de identidad del dispositivo en el dispositivo.
  1. Abra una ventana de Azure PowerShell en modo de administrador. Asegúrese de usar una sesión AMD64 de PowerShell al instalar IoT Edge, no PowerShell (x86).

  2. El comando Initialize-IoTEdge configura el entorno de ejecución de IoT Edge en la máquina. El comando tiene como valor predeterminado el aprovisionamiento manual con contenedores de Windows, por lo que usa la marca -DpsX509 para usar el aprovisionamiento automático con autenticación de certificados X.509.

    Reemplace los valores de marcador de posición de scope_id, identity cert chain pathy identity key path por los valores adecuados de la instancia de DPS y las rutas de archivos en tu dispositivo.

    Agregue el parámetro -RegistrationId paste_registration_id_here si desea establecer el identificador de dispositivo como algo distinto del nombre CN del certificado de identidad.

    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Initialize-IoTEdge -DpsX509 -ScopeId paste_scope_id_here -X509IdentityCertificate paste_identity_cert_chain_path_here -X509IdentityPrivateKey paste_identity_key_path_here
    

    Sugerencia

    El archivo de configuración almacena la información del certificado y la clave como URI de archivo. Sin embargo, el comando Initialize-IoTEdge controla este paso de formato para usted, por lo que puede proporcionar la ruta de acceso absoluta a los archivos de certificado y clave del dispositivo.

Comprobación de instalación correcta

Si el entorno de ejecución se inició correctamente, puede ir a IoT Hub y empezar a implementar módulos de IoT Edge en el dispositivo.

Puede comprobar que la inscripción individual que ha creado en Device Provisioning Service se ha usado. En el portal de Azure, vaya a su instancia del servicio de aprovisionamiento de dispositivos. Abra los detalles de la inscripción para la inscripción individual que ha creado. Observe que se asigna el estado de la inscripción y se muestra el identificador del dispositivo.

Use los siguientes comandos en el dispositivo para comprobar que la instancia de IoT Edge se haya instalado e iniciado correctamente.

Compruebe el estado del servicio IoT Edge.

Get-Service iotedge

Examine los registros del servicio.

. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog

Enumere los módulos en ejecución.

iotedge list

Pasos siguientes

El proceso de inscripción en el servicio de aprovisionamiento de dispositivos permite establecer el ID del dispositivo y las etiquetas del dispositivo gemelo al mismo tiempo que se aprovisiona el nuevo dispositivo. Puede usar esos valores para dirigirse a dispositivos individuales o grupos de dispositivos con la administración automática de dispositivos. Aprenda a implementar y supervisar módulos de IoT Edge a escala mediante Azure Portal o mediante la CLI de Azure.