Creación de certificados de demostración para probar las características de dispositivo IoT Edge

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.

Los dispositivos IoT Edge requieren certificados para una comunicación segura entre el entorno de ejecución, los módulos y los dispositivos de bajada. Si no tiene una entidad de certificación para crear los certificados necesarios, puede usar certificados de demostración para probar las características de IoT Edge en el entorno de prueba. En este artículo se describe la funcionalidad de los scripts de generación de certificados que IoT Edge proporciona para las pruebas.

Advertencia

Estos certificados expiran en 30 días y no deben usarse en ningún escenario de producción.

Puede crear certificados en cualquier equipo y, a continuación, copiarlos en el dispositivo IoT Edge o generar los certificados directamente en el dispositivo IoT Edge.

Requisitos previos

Una máquina de desarrollo con Git instalado.

Descarga de scripts de certificado de prueba y configuración del directorio de trabajo

El repositorio IoT Edge en GitHub incluye scripts de generación de certificados que puede usar para crear certificados de demostración. En esta sección se ofrecen instrucciones para preparar los scripts para que se ejecuten en el equipo, ya sea en Windows o Linux.

Para crear certificados de demostración en un dispositivo Windows, debe instalar OpenSSL, clonar los scripts de generación y configurarlos para que se ejecuten localmente en PowerShell.

Instalar OpenSSL

Instale OpenSSL para Windows en el equipo que usa para generar los certificados. Si ya ha instalado OpenSSL en el dispositivo Windows, asegúrese de que openssl.exe está disponible en la variable de entorno PATH.

Hay varias maneras de instalar OpenSSL, como las siguientes:

  • Más fácil: descargue e instale los archivos binarios openSSL de terceros, por ejemplo, desde OpenSSL en SourceForge. Agregue la ruta de acceso completa al archivo openssl.exe a la variable de entorno PATH.

  • Recomendado: Descargue el código fuente de OpenSSL y compile los archivos binarios en su máquina por sí mismo o mediante vcpkg. Las instrucciones que aparecen a continuación usan vcpkg para descargar el código fuente, compilar e instalar OpenSSL en el equipo Windows con pasos fáciles.

    1. Vaya al directorio donde quiera instalar vcpkg. Siga las instrucciones para descargar e instalar vcpkg.

    2. Después de instalar vcpkg, ejecute el siguiente comando desde un símbolo del sistema de Powershell para instalar el paquete de OpenSSL para Windows x64. Esta instalación suele tardar, aproximadamente, cinco minutos en completarse.

      .\vcpkg install openssl:x64-windows
      
    3. Agregue <vcpkg path>\installed\x64-windows\tools\openssl a la variable de entorno PATH para que el archivo openssl.exe esté disponible para su invocación.

Preparación de scripts en PowerShell

El repositorio de Git de Azure IoT Edge contiene scripts que puede usar para generar certificados de prueba. En esta sección, se clona el repositorio de IoT Edge y se ejecutan los scripts.

  1. Abra una ventana de Azure PowerShell en modo de administrador.

  2. Clone el repositorio de Git de IoT Edge que contiene los scripts para generar los certificados de demostración. Use el comando git clone o descargue el archivo ZIP.

    git clone https://github.com/Azure/iotedge.git
    
  3. Cree un directorio en el que quiera trabajar y copie en él los scripts de certificado. Todos los archivos de certificados y claves se crearán en este directorio.

    mkdir wrkdir
    cd .\wrkdir\
    cp ..\iotedge\tools\CACertificates\*.cnf .
    cp ..\iotedge\tools\CACertificates\ca-certs.ps1 .
    

    Si descargó el repositorio como un archivo ZIP, el nombre de la carpeta es iotedge-master y el resto de la ruta de acceso es igual.

  4. Habilite PowerShell para ejecutar los scripts.

    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
    
  5. Lleve las funciones usadas por los scripts al espacio de nombres global de PowerShell.

    . .\ca-certs.ps1
    

    La ventana de PowerShell mostrará una advertencia para indicar que los certificados generados por ese script son solo para fines de prueba y no se deben usar en escenarios de producción.

  6. Compruebe que OpenSSL se ha instalado correctamente y asegúrese de que no haya conflictos de nombres con los certificados existentes. Si hay problemas, la salida del script debe describir cómo corregirlos en el sistema.

    Test-CACertsPrerequisites
    

Creación de un certificado de CA raíz

Ejecute este script para generar una entidad de certificación raíz necesaria para cada paso de este artículo.

El certificado de CA raíz se usa para hacer todos los demás certificados de demostración con el fin de probar un escenario de IoT Edge. Puede seguir usando el mismo certificado de CA raíz para crear certificados de demostración para varios dispositivos IoT Edge o de bajada.

Si ya tiene un certificado de CA raíz en la carpeta de trabajo, no cree uno nuevo. El nuevo certificado de CA raíz sobrescribirá el antiguo y los certificados de bajada que se realicen desde el antiguo dejarán de funcionar. Si desea tener varios certificados de CA raíz, asegúrese de administrarlos en carpetas independientes.

  1. Vaya al directorio de trabajo wrkdir donde colocó los scripts de generación de certificados.

  2. Cree el certificado de entidad de certificación raíz y firme con él un certificado intermedio. Los certificados se colocan en el directorio de trabajo.

    New-CACertsCertChain rsa
    

    Este comando de script crea varios archivos de certificado y clave, pero cuando los artículos solicitan el certificado de CA raíz, use el siguiente archivo:

    certs\azure-iot-test-only.root.ca.cert.pem

Este certificado es necesario para poder crear más certificados para los dispositivos IoT Edge y los dispositivos de bajada, tal y como se describe en las secciones siguientes.

Creación de certificados de identidad de dispositivo IoT Edge

Los certificados de identidad de dispositivos IoT Edge se usan para aprovisionar dispositivos IoT Edge si decide usar la autenticación de certificado X.509. Si usa una clave simétrica para autenticarse en IoT Hub o DPS, estos certificados no son necesarios y puede omitir esta sección.

Estos certificados funcionan tanto si usa el aprovisionamiento manual como el automático a través de Azure IoT Hub Device Provisioning Service (DPS).

Los certificados de identidad de dispositivo van en la sección Provisioning del archivo de configuración en el dispositivo IoT Edge.

  1. Vaya al directorio de trabajo wrkdir que contiene los scripts de generación de certificados y el certificado de CA raíz.

  2. Cree el certificado de identidad de dispositivo IoT Edge y una clave privada con el siguiente comando:

    New-CACertsEdgeDeviceIdentity "<device-id>"
    

    El nombre que pase a este comando es el identificador del dispositivo IoT Edge en IoT Hub.

  3. Este comando de identidad de dispositivo nuevo crea varios archivos de claves y certificados:

    Tipo Archivo Descripción
    Certificado de identidad de dispositivo certs\iot-edge-device-identity-<device-id>.cert.pem Firmado por el certificado intermedio generado anteriormente. Contiene solo el certificado de identidad. Especifíquelo en el archivo de configuración para la inscripción individual de DPS o el aprovisionamiento de IoT Hub.
    Cadena de certificados completa certs\iot-edge-device-identity-<device-id>-full-chain.cert.pem Contiene la cadena de certificados completa, incluido el certificado intermedio. Especifíquelo en el archivo de configuración para que IoT Edge lo presente ante DPS para el aprovisionamiento de la inscripción de grupos.
    Clave privada private\iot-edge-device-identity-<device-id>.key.pem Clave privada asociada al certificado de identidad del dispositivo. Debe especificarse en el archivo de configuración siempre que use algún tipo de autenticación de certificado (huella digital o CA) para DPS o IoT Hub.

Creación de certificados de CA perimetrales

Estos certificados son necesarios en los escenarios de puerta de enlace, ya que el certificado de CA perimetral es la forma que tiene el dispositivo IoT Edge de comprobar su identidad en los dispositivos de bajada. Si no está conectando ningún dispositivo de bajada a IoT Edge, puede omitir esta sección.

El certificado de CA perimetral también es responsable de crear certificados para los módulos que se ejecutan en el dispositivo, pero el entorno de ejecución de IoT Edge puede crear certificados temporales si la CA perimetral no está configurada. Los certificados de CA perimetral están en la sección CA perimetral del archivo config.toml del dispositivo IoT Edge. Para obtener más información, consulte Información sobre los certificados de Azure IoT Edge.

  1. Vaya al directorio de trabajo wrkdir que contiene los scripts de generación de certificados y el certificado de CA raíz.

  2. Cree el certificado de entidad de certificación de IoT Edge y una clave privada con el siguiente comando. Proporcione un nombre para el certificado de entidad de certificación. El nombre que se pasa al comando New-CACertsEdgeDeviceno debe coincidir con el parámetro hostname del archivo de configuración o el id. de dispositivo en IoT Hub.

    New-CACertsEdgeDevice "<CA cert name>"
    
  3. Este comando crea varios archivos de claves y certificados. El siguiente certificado y el par de claves deben copiarse en un dispositivo IoT Edge y hacerse referencia en el archivo de configuración:

    • certs\iot-edge-device-ca-<CA cert name>-full-chain.cert.pem
    • private\iot-edge-device-ca-<CA cert name>.key.pem

Creación de certificados de dispositivo de bajada

Estos certificados son necesarios para configurar un dispositivo IoT de bajada para un escenario de puerta de enlace y quiere usar la autenticación X.509 con IoT Hub o DPS. Si quiere usar la autenticación de clave simétrica, no necesita crear ningún certificado adicional para el dispositivo de bajada y puede omitir esta sección.

Hay dos maneras de autenticar un dispositivo IoT mediante certificados X.509: mediante certificados autofirmados o mediante certificados firmados por una entidad de certificación (CA).

  • Para la autenticación de X.509 autofirmada, en ocasiones denominada autenticación de huella digital, tendrá que crear certificados para el dispositivo IoT. Estos certificados contienen una huella digital que se comparte con IoT Hub para la autenticación.
  • Para la autenticación de certificados X.509 firmados por la autoridad de certificación (CA), necesita un certificado de CA raíz registrado en IoT Hub o DPS y usarlo para firmar los certificados del dispositivo IoT. Todo dispositivo con un certificado emitido por el certificado de CA raíz o cualquiera de sus certificados intermedios puede autenticarse siempre y cuando el dispositivo presente la cadena completa.

Los scripts de generación de certificados pueden ayudarle a crear certificados de demostración para probar cualquiera de estos escenarios de autenticación.

Certificados autofirmados

Al autenticar un dispositivo IoT con certificados autofirmados, debe crear certificados de dispositivo basados en el certificado de CA raíz de la solución. Después, recupere una "huella digital" hexadecimal de los certificados que se van a proporcionar a IoT Hub. El dispositivo IoT también necesita una copia de sus certificados de dispositivo para que pueda autenticarse con IoT Hub.

  1. Vaya al directorio de trabajo wrkdir que contiene los scripts de generación de certificados y el certificado de CA raíz.

  2. Cree dos certificados (principal y secundario) para el dispositivo de bajada. Una convención de nomenclatura fácil de usar es crear los certificados con el nombre del dispositivo IoT y, después, la etiqueta principal o secundaria. Por ejemplo:

    New-CACertsDevice "<device ID>-primary"
    New-CACertsDevice "<device ID>-secondary"
    

    Este comando de script crea varios archivos de claves y certificados. Los siguientes pares de certificados y claves deben copiarse en el dispositivo IoT de bajada y se puede hacer referencia a ellos en las aplicaciones que se conectan a IoT Hub:

    • certs\iot-device-<device ID>-primary-full-chain.cert.pem
    • certs\iot-device-<device ID>-secondary-full-chain.cert.pem
    • certs\iot-device-<device ID>-primary.cert.pem
    • certs\iot-device-<device ID>-secondary.cert.pem
    • certs\iot-device-<device ID>-primary.cert.pfx
    • certs\iot-device-<device ID>-secondary.cert.pfx
    • private\iot-device-<device ID>-primary.key.pem
    • private\iot-device-<device ID>-secondary.key.pem
  3. Recupere la huella digital SHA1 (llamada huella digital en contextos de IoT Hub) de cada certificado. La huella digital es una cadena de 40 caracteres hexadecimales. Use el siguiente comando de openssl para ver el certificado y localizar la huella digital:

    Write-Host (Get-Pfxcertificate -FilePath certs\iot-device-<device name>-primary.cert.pem).Thumbprint
    

    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.

Certificados firmados por una entidad de certificación

Al autenticar un dispositivo IoT con certificados firmados por una CA, debe cargar el certificado de CA raíz de la solución en IoT Hub. Use el mismo certificado de CA raíz para crear certificados de dispositivo que se colocarán en el dispositivo de IoT para que pueda autenticarse con IoT Hub.

Los certificados de esta sección son para los pasos de la serie de tutoriales sobre el certificado X.509 de IoT Hub. Vea Descripción de la criptografía de clave pública y la infraestructura de clave pública X.509 para obtener la introducción de esta serie.

  1. Cargue el archivo de certificado de CA raíz desde el directorio de trabajo, certs\azure-iot-test-only.root.ca.cert.pem, a la instancia de IoT Hub.

  2. Si la comprobación automática no está seleccionada, use el código proporcionado en Azure Portal para comprobar que es el propietario de ese certificado de CA raíz.

    New-CACertsVerificationCert "<verification code>"
    
  3. Cree una cadena de certificados para el dispositivo de bajada. Use el mismo identificador de dispositivo con el que está registrado el dispositivo en IoT Hub.

    New-CACertsDevice "<device id>"
    

    Este comando de script crea varios archivos de claves y certificados. Los siguientes pares de certificados y claves deben copiarse en el dispositivo IoT de bajada y se puede hacer referencia a ellos en las aplicaciones que se conectan a IoT Hub:

    • certs\iot-device-<device id>.cert.pem
    • certs\iot-device-<device id>.cert.pfx
    • certs\iot-device-<device id>-full-chain.cert.pem
    • private\iot-device-<device id>.key.pem