Uso de certificados X.509 a través de HTTPS sin un SDK

En este artículo de procedimientos, aprovisionará un dispositivo mediante certificados x.509 a través de HTTPS sin usar un SDK de dispositivo Azure IoT DPS. La mayoría de los lenguajes proporcionan bibliotecas para enviar solicitudes HTTP, pero, en lugar de centrarse en un lenguaje específico, en este artículo, usará la herramienta de línea de comandos cURL para enviar y recibir a través de HTTPS.

Puede seguir los pasos de este artículo en una máquina Linux o Windows. Si trabaja en Subsistema de Windows para Linux (WSL) o en una máquina Linux, puede escribir todos los comandos en el sistema local en un símbolo del sistema de Bash. Si trabaja en Windows, escriba todos los comandos del sistema local en un símbolo del sistema de GitBash.

Hay varias rutas de acceso a través de este artículo en función del tipo de entrada de inscripción y los certificados X.509 que elija usar. Después de instalar los requisitos previos, asegúrese de leer la información general antes de continuar.

Requisitos previos

  • Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

  • Realice los pasos que se describen en Configuración de IoT Hub Device Provisioning Service con Azure Portal.

  • Asegúrese de que tiene Python 3.7 o una versión posterior instalada en la máquina. Puede comprobar la versión de Python ejecutando python --version o python3 --version.

  • Si trabaja en Windows, instale la versión más reciente de Git. Asegúrese de que Git se ha agregado a las variables de entorno accesibles desde la ventana de comandos. Consulte las herramientas de cliente de Git de Software Freedom Conservancy para instalar la versión más reciente de las herramientas git, lo que incluye Git Bash, la aplicación de línea de comandos que puede usar para interactuar con su repositorio de Git local. En Windows, escribirá todos los comandos en el sistema local en un símbolo del sistema de GitBash.

  • Azure CLI. Tiene dos opciones para ejecutar comandos de la CLI de Azure en este artículo:

    • Use Azure Cloud Shell, un shell interactivo que ejecuta comandos de la CLI en el explorador. Esta opción se recomienda porque no es necesario instalar nada. Si usa Cloud Shell por primera vez, inicie sesión en Azure Portal. Siga los pasos descritos en el inicio rápido de Cloud Shell para iniciar Cloud Shell y seleccionar el entorno Bash.
    • Opcionalmente, ejecute la CLI de Azure en su equipo local. Si la CLI de Azure ya está instalada, ejecute az upgrade para actualizar la CLI y las extensiones a la versión actual. Para instalar la CLI de Azure, consulte Instalación de la CLI de Azure.
  • Si trabaja en un entorno de Linux o WSL, abra un símbolo del sistema de Bash para ejecutar comandos localmente. Si trabaja en un entorno de Windows, abra un símbolo del sistema de GitBash.

Información general

Hay tres escenarios que se tratan en este artículo y los pasos iniciales que realizará serán diferentes para cada uno. Si desea:

Una vez completados los pasos para el escenario elegido, puede continuar con Registrar el dispositivo y Enviar un mensaje de telemetría.

Creación de un certificado de dispositivo

En este artículo, usará un certificado X.509 para autenticarse con DPS mediante una inscripción individual o un grupo de inscripción.

Si usa una inscripción individual, puede usar un certificado X.509 autofirmado o una cadena de certificados compuesta por el certificado de dispositivo más uno o varios certificados de firma. Si usa un grupo de inscripción, debe usar una cadena de certificados.

Importante

Para la autenticación de inscripción X.509, el nombre común del firmante (CN) del certificado de dispositivo se usa como identificador de registro para el dispositivo. El identificador de registro es una cadena que no distingue mayúsculas de minúsculas de caracteres alfanuméricos más los caracteres especiales: '-', '.', '_', ':'. El último carácter debe ser alfanumérico o un guion ('-'). DPS admite identificadores de registro de hasta 128 caracteres; sin embargo, el nombre común del firmante en un certificado X.509 está limitado a 64 caracteres. Si cambia el nombre común del firmante del certificado de dispositivo en los pasos siguientes, asegúrese de que cumple este formato.

Uso de un certificado autofirmado

Para crear un certificado autofirmado que se usará con una inscripción individual, vaya a un directorio donde quiera crear el certificado y siga estos pasos:

  1. Ejecute el siguiente comando:

    winpty openssl req -outform PEM -x509 -sha256 -newkey rsa:4096 -keyout device-key.pem -out device-cert.pem -days 30 -extensions usr_cert -addext extendedKeyUsage=clientAuth -subj "//CN=my-x509-device"
    

    Importante

    La barra diagonal adicional que se proporciona para el nombre de firmante (//CN=my-x509-device) solo es necesaria para escapar la cadena con Git en plataformas Windows.

  2. Cuando se le pida que Enter PEM pass phrase: (Escriba la frase de contraseña de PEM:) use la frase de contraseña 1234.

  3. Cuando se le pregunte de nuevo Verifying - Enter PEM pass phrase: (Verificando: escriba la fase de contraseña de PEM), use de nuevo la frase de contraseña 1234.

    Ahora se deben generar un archivo de certificado de clave pública (device-cert.pem) y un archivo de clave privada (device-key.pem) en el directorio donde ejecutó el comando openssl.

    El archivo de certificado tiene su nombre común de sujeto (CN) establecido en my-x509-device.

    El archivo de clave privada está protegido por la frase de contraseña: 1234.

  4. El archivo de certificado está codificado en Base64. Para ver el nombre común del firmante (CN) y otras propiedades del archivo de certificado, escriba el siguiente comando:

    winpty openssl x509 -in device-cert.pem -text -noout
    
    Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            77:3e:1d:e4:7e:c8:40:14:08:c6:09:75:50:9c:1a:35:6e:19:52:e2
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = my-x509-device
        Validity
            Not Before: May  5 21:41:42 2022 GMT
            Not After : Jun  4 21:41:42 2022 GMT
        Subject: CN = my-x509-device
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (4096 bit)
                Modulus:
                    00:d2:94:37:d6:1b:f7:43:b4:21:c6:08:1a:d6:d7:
                    e6:40:44:4e:4d:24:41:6c:3e:8c:b2:2c:b0:23:29:
                    ...
                    23:6e:58:76:45:18:03:dc:2e:9d:3f:ac:a3:5c:1f:
                    9f:66:b0:05:d5:1c:fe:69:de:a9:09:13:28:c6:85:
                    0e:cd:53
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            Netscape Comment:
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier:
                63:C0:B5:93:BF:29:F8:57:F8:F9:26:44:70:6F:9B:A4:C7:E3:75:18
            X509v3 Authority Key Identifier:
                keyid:63:C0:B5:93:BF:29:F8:57:F8:F9:26:44:70:6F:9B:A4:C7:E3:75:18
    
            X509v3 Extended Key Usage:
                TLS Web Client Authentication
    Signature Algorithm: sha256WithRSAEncryption
         82:8a:98:f8:47:00:85:be:21:15:64:b9:22:b0:13:cc:9e:9a:
         ed:f5:93:b9:4b:57:0f:79:85:9d:89:47:69:95:65:5e:b3:b1:
         ...
         cc:b2:20:9a:b7:f2:5e:6b:81:a1:04:93:e9:2b:92:62:e0:1c:
         ac:d2:49:b9:36:d2:b0:21
    

Uso de una cadena de certificados

Si usa un grupo de inscripción, debe autenticarse con una cadena de certificados. Con una inscripción individual, puede usar una cadena de certificados o un certificado autofirmado.

Para crear una cadena de certificados, siga las instrucciones de Creación de una cadena de certificados X.509. Solo necesita un dispositivo para este artículo, por lo que puede detenerse después de crear la clave privada y la cadena de certificados para el primer dispositivo.

Cuando haya terminado, debería tener los archivos siguientes:

Certificado Archivo Descripción
certificado de CA raíz certs/azure-iot-test-only.root.ca.cert.pem Se cargará en DPS y se comprobará.
certificado de CA intermedia certs/azure-iot-test-only.intermediate.cert.pem Se usará para crear un grupo de inscripción en DPS.
clave privada device-01 private/device-01.key.pem Lo usa el dispositivo para comprobar la propiedad del certificado de dispositivo durante la autenticación con DPS.
Certificado device-01 certs/device-01.cert.pem Se usa para crear una entrada de inscripción individual con DPS.
certificado de cadena completa device-01 certs/device-01-full-chain.cert.pem Presentado por el dispositivo para autenticarse y registrarse en DPS.

Uso de una inscripción individual

Para crear una inscripción individual que se usará para este artículo, use el comando az iot dps enrollment create.

El comando siguiente crea una entrada de inscripción individual con la directiva de asignación predeterminada para la instancia de DPS mediante el certificado de dispositivo que especifique.

az iot dps enrollment create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --attestation-type x509 --certificate-path {path to your certificate}
  • Sustituya el nombre del grupo de recursos y la instancia de DPS.

  • El identificador de inscripción es el identificador de registro del dispositivo y, para las inscripciones X.509, debe coincidir con el nombre común del firmante (CN) del certificado de dispositivo.

  • La ruta de acceso del certificado es la ruta de acceso al certificado de dispositivo.

Nota:

Si usa Cloud Shell para ejecutar comandos de la CLI de Azure, puede usar el botón de carga para cargar el archivo de certificado en la unidad en la nube antes de ejecutar el comando.

Screenshot that shows the upload file button in Azure Cloud Shell.

Uso de un grupo de inscripción

Para crear un grupo de inscripción que se usará para este artículo, use el comando az iot dps enrollment-group create.

El siguiente comando crea una entrada de grupo de inscripción con la directiva de asignación predeterminada para la instancia de DPS mediante un certificado de entidad de certificación intermedio:

az iot dps enrollment-group create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --certificate-path {path_to_your_certificate}
  • Sustituya el nombre del grupo de recursos y la instancia de DPS.

  • El identificador de registro es una cadena que no distingue mayúsculas de minúsculas, de caracteres alfanuméricos más los caracteres especiales: '-', '.', '_', ':'. El último carácter debe ser alfanumérico o un guion ('-'). Puede ser cualquier nombre que elija usar para el grupo de inscripción.

  • La ruta de acceso del certificado es la ruta de acceso al certificado intermedio. Si ha seguido las instrucciones de Uso de una cadena de certificados, el nombre de archivo es certs/azure-iot-test-only.intermediate.cert.pem.

Nota:

Si usa Cloud Shell para ejecutar comandos de la CLI de Azure, puede usar el botón de carga para cargar el archivo de certificado en la unidad en la nube antes de ejecutar el comando.

Screenshot that shows the upload file button in Azure Cloud Shell.

Nota:

Si lo prefiere, puede crear un grupo de inscripción basado en un certificado de firma que se haya cargado y comprobado previamente con DPS (consulte la sección siguiente). Para ello, especifique el nombre del certificado con --ca-name y omita el parámetro --certificate-path en el comando az iot dps enrollment-group create.

Carga y comprobación de un certificado de firma

Si usa una cadena de certificados para una inscripción individual o un grupo de inscripción, debe cargar y comprobar al menos un certificado en la cadena de firma del certificado de dispositivo en DPS.

  • Para una inscripción individual, puede ser cualquier certificado de firma en la cadena de certificados del dispositivo.

  • En el caso de un grupo de inscripción, puede ser el certificado establecido en el grupo de inscripción o en cualquier certificado de su cadena de registro hasta e incluido el certificado de CA raíz.

Para cargar y comprobar el certificado, use el comando az iot dps certificate create :

az iot dps certificate create -g {resource_group_name} --dps-name {dps_name} --certificate-name {friendly_name_for_your_certificate} --path {path_to_your_certificate} --verified true
  • Sustituya el nombre del grupo de recursos y la instancia de DPS.

  • La ruta de acceso del certificado es la ruta de acceso al certificado de firma. En este artículo, se recomienda cargar el certificado de entidad de certificación raíz. Si ha seguido las instrucciones de Uso de una cadena de certificados, el nombre de archivo es certs/azure-iot-test-only.root.ca.cert.pem.

  • El nombre del certificado solo puede contener caracteres alfanuméricos o los siguientes caracteres especiales: -._. No se permite ningún espacio en blanco. Por ejemplo, "azure-iot-test-only-root".

Nota:

Si usa Cloud Shell para ejecutar comandos de la CLI de Azure, puede usar el botón de carga para cargar el archivo de certificado en la unidad en la nube antes de ejecutar el comando.

Screenshot that shows the upload file button in Azure Cloud Shell.

Nota:

Los pasos de esta sección comprobaron automáticamente el certificado al cargarlo. También puede realizar la comprobación manual del certificado. Para más información, consulte Comprobación manual de la entidad de CA o intermedia.

Registro del dispositivo

Llame a la API de REST Registrar dispositivo para aprovisionar el dispositivo a través de DPS.

Use el siguiente comando cURL:

curl -L -i -X PUT --cert [path_to_your_device_cert] --key [path_to_your_device_private_key] -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -d '{"registrationId": "[registration_id]"}' https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31

Donde:

  • -L indica a cURL que siga las redirecciones HTTP.

  • –i indica a cURL que incluya encabezados de protocolo en la salida. Estos encabezados no son estrictamente necesarios, pero pueden ser útiles.

  • -X PUT indica a cURL que se trata de un comando HTTP PUT. Necesario para esta llamada API.

  • --cert [path_to_your_device_cert] indica a cURL dónde encontrar el certificado X.509 del dispositivo. Si la clave privada del dispositivo está protegida por una frase de paso, puede agregar la frase de paso después de la ruta de acceso del certificado precedida de dos puntos, por ejemplo: --cert my-device.pem:1234.

    • Si usa un certificado autofirmado, el archivo de certificado de dispositivo solo contendrá un único certificado X.509. Si ha seguido las instrucciones de Uso de un certificado autofirmado, el nombre de archivo es device-cert.pem y la frase de contraseña de clave privada es 1234, por lo que use --cert device-cert.pem:1234.

    • Si usa una cadena de certificados, por ejemplo, al autenticarse a través de un grupo de inscripción, el archivo de certificado de dispositivo debe contener una cadena de certificados válida. La cadena de certificados debe incluir el certificado de dispositivo y los certificados de registro hasta e incluyendo un certificado comprobado. Si ha seguido las instrucciones de Uso de una cadena de certificados para crear la cadena de certificados, la ruta de acceso de archivos es certs/device-01-full-chain.cert.pem, por lo que use --cert certs/device-01-full-chain.cert.pem.

  • --key [path_to_your_device_private_key] indica a cURL dónde encontrar la clave privada del dispositivo.

    • Si ha seguido las instrucciones de Uso de un certificado autofirmado, el nombre de archivo es device-key.pem, por lo que use --key device-cert.pem:1234.

    • Si ha seguido las instrucciones de Uso de una cadena de certificados, la ruta de acceso de la clave es certs/device-01-full-chain.cert.pem, por lo que use --cert certs/device-01-full-chain.cert.pem.

  • -H 'Content-Type: application/json' indica a DPS que estamos publicando contenido JSON y debe ser 'application/json'

  • -H 'Content-Encoding: utf-8' indica a DPS la codificación que usamos para el cuerpo del mensaje. Establezca en el valor adecuado para el sistema operativo o el cliente; sin embargo, generalmente es utf-8.

  • -d '{"registrationId": "[registration_id]"}', el parámetro –d son los "datos" o el cuerpo del mensaje que estamos publicando. Debe ser JSON, en forma de '{"registrationId":"[registration_id"}'. Tenga en cuenta que para cURL, está entre comillas simples; de lo contrario, debe aplicar escape a las comillas dobles en el JSON. Para la inscripción X.509, el identificador de registro es el nombre común del firmante (CN) del certificado de dispositivo.

  • Por último, el último parámetro es la dirección URL a la que se va a publicar. Para DPS "normal" (es decir, no local), se usa el punto de conexión global de DPS, global.azure-devices-provisioning.net: https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31. Tenga en cuenta que tiene que reemplazar [dps_scope_id] y [registration_id] por los valores adecuados.

Por ejemplo:

  • Si ha seguido las instrucciones de Uso de un certificado autofirmado:

    curl -L -i -X PUT --cert device-cert.pem:1234 --key device-key.pem -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -d '{"registrationId": "my-x509-device"}' https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-x509-device/register?api-version=2021-06-01
    
  • Si ha seguido las instrucciones de Uso de una cadena de certificados:

    curl -L -i -X PUT --cert certs/device-01-full-chain.cert.pem --key private/device-01.key.pem -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -d '{"registrationId": "device-01"}' https://global.azure-devices-provisioning.net/0ne00111111/registrations/device-01/register?api-version=2021-06-01
    

Una llamada correcta tendrá una respuesta similar a la siguiente:

HTTP/1.1 202 Accepted
Date: Sat, 27 Aug 2022 17:53:18 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Location: https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-x509-device/register
Retry-After: 3
x-ms-request-id: 05cdec07-c0c7-48f3-b3cd-30cfe27cbe57
Strict-Transport-Security: max-age=31536000; includeSubDomains

{"operationId":"5.506603669bd3e2bf.b3602f8f-76fe-4341-9214-bb6cfb891b8a","status":"assigning"}

La respuesta contiene un identificador de operación y un estado. En este caso, el estado se establece en assigning. La inscripción de DPS es, potencialmente, una operación de larga duración, por lo que se realiza de forma asincrónica. Normalmente, sondeará el estado mediante la API de REST de Búsqueda de estado de la operación para determinar cuándo se ha asignado el dispositivo o si se ha producido un error.

Los valores de estado válidos para DPS son:

  • assigned: el valor devuelto de la llamada de estado indicará a qué IoT Hub se asignó el dispositivo.

  • assigning: la operación todavía está en curso.

  • disabled: el registro de inscripción está deshabilitado en DPS, por lo que no se puede asignar el dispositivo.

  • failed: no se pudo realizar la asignación. Habrá un errorCode y errorMessage devueltos en un registro registrationState en la respuesta para indicar lo que ha fallado.

  • unassigned

Para llamar a la API de Búsqueda de estado de la operación, use el siguiente comando cURL:

curl -L -i -X GET --cert [path_to_your_device_cert] --key [path_to_your_device_private_key] -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/operations/[operation_id]?api-version=2019-03-31

Usará el mismo ámbito de identificador, identificador de registro y certificado y clave que usó en la solicitud Registrar dispositivo. Use el identificador de operación que se devolvió en la respuesta Registrar dispositivo.

Por ejemplo, el siguiente comando es para el certificado autofirmado creado en Usar un certificado autofirmado. (Debe modificar el ámbito de identificador y el identificador de la operación).

curl -L -i -X GET --cert ./device-certPUT --cert device-cert.pem:1234 --key device-key.pem -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-x509-device/operations/5.506603669bd3e2bf.b3602f8f-76fe-4341-9214-bb6cfb891b8a?api-version=2021-06-01

En la salida siguiente se muestra la respuesta de un dispositivo que se ha asignado correctamente. Observe que la propiedad status es assigned y que la propiedad registrationState.assignedHub se establece en el centro de IoT donde se aprovisionó el dispositivo.

HTTP/1.1 200 OK
Date: Sat, 27 Aug 2022 18:10:49 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
x-ms-request-id: 8f211bc5-3ed8-4c8b-9a79-e003e756e9e4
Strict-Transport-Security: max-age=31536000; includeSubDomains

{
   "operationId":"5.506603669bd3e2bf.b3602f8f-76fe-4341-9214-bb6cfb891b8a",
   "status":"assigned",
   "registrationState":{
      "x509":{
         
      },
      "registrationId":"my-x509-device",
      "createdDateTimeUtc":"2022-08-27T17:53:19.5143497Z",
      "assignedHub":"MyExampleHub.azure-devices.net",
      "deviceId":"my-x509-device",
      "status":"assigned",
      "substatus":"initialAssignment",
      "lastUpdatedDateTimeUtc":"2022-08-27T17:53:19.7519141Z",
      "etag":"IjEyMDA4NmYyLTAwMDAtMDMwMC0wMDAwLTYzMGE1YTBmMDAwMCI="
   }
}

Anote el identificador de dispositivo y el centro de IoT asignado. Los usará para enviar un mensaje de telemetría en la sección siguiente.

Envío de un mensaje de telemetría

Para enviar telemetría al dispositivo, llame a la API de REST Enviar evento de dispositivo de IoT Hub.

Use el siguiente comando cURL:

curl -L -i -X POST --cert [path_to_your_device_cert] --key [path_to_your_device_private_key] -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -d '{"temperature": 30}' https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13

Donde:

  • -X POST indica a cURL que se trata de un comando HTTP POST. Necesario para esta llamada API.

  • --cert [path_to_your_device_cert] indica a cURL dónde encontrar el certificado X.509 del dispositivo. Si la clave privada del dispositivo está protegida por una frase de paso, puede agregar la frase de paso después de la ruta de acceso del certificado precedida de dos puntos, por ejemplo: --cert my-device.pem:1234.

    • Si usa un certificado autofirmado, el archivo de certificado de dispositivo solo contendrá un único certificado X.509. Si ha seguido las instrucciones de Uso de un certificado autofirmado, el nombre de archivo es device-cert.pem y la frase de contraseña de clave privada es 1234, por lo que use --cert device-cert.pem:1234.

    • Si usa una cadena de certificados, el archivo de certificado de dispositivo debe contener una cadena de certificados válida. Si ha seguido las instrucciones de Uso de una cadena de certificados para crear la cadena de certificados, la ruta de acceso de archivos es certs/device-01-full-chain.cert.pem, por lo que use --cert certs/device-01-full-chain.cert.pem.

  • --key [path_to_your_device_private_key] indica a cURL dónde encontrar la clave privada del dispositivo.

    • Si ha seguido las instrucciones de Uso de un certificado autofirmado, el nombre de archivo es device-key.pem, por lo que use --key device-cert.pem:1234.

    • Si ha seguido las instrucciones de Uso de una cadena de certificados, la ruta de acceso de la clave es certs/device-01-full-chain.cert.pem, por lo que use --cert certs/device-01-full-chain.cert.pem.

  • -H 'Content-Type: application/json' indica a IoT Hub que estamos publicando contenido JSON y debe ser 'application/json'.

  • -H 'Content-Encoding: utf-8' indica a IoT Hub la codificación que usamos para el cuerpo del mensaje. Establezca en el valor adecuado para el sistema operativo o el cliente; sin embargo, generalmente es utf-8.

  • -d '{"temperature": 30}', el parámetro –d son los "datos" o el cuerpo del mensaje que estamos publicando. En este artículo, vamos a publicar un único punto de datos de temperatura. El tipo de contenido se especificó como application/json, por lo que, para esta solicitud, el cuerpo es JSON. Tenga en cuenta que para cURL, está entre comillas simples; de lo contrario, debe aplicar escape a las comillas dobles en el JSON.

  • El último parámetro es la dirección URL a la que se va a publicar. Para la API de Enviar evento de dispositivo, la dirección URL es: https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13.

    • Reemplace [assigned_iot_hub_name] por el nombre del centro de IoT al que se asignó el dispositivo.

    • Reemplace [device_id] por el identificador de dispositivo que se asignó al registrar el dispositivo. En el caso de los dispositivos que aprovisionan a través de grupos de inscripción, el identificador de dispositivo será el identificador de registro. En el caso de las inscripciones individuales, puede especificar, opcionalmente, un identificador de dispositivo diferente al identificador de registro en la entrada de inscripción.

Por ejemplo:

  • Si ha seguido las instrucciones de Uso de un certificado autofirmado:

    curl -L -i -X POST --cert device-cert.pem:1234 --key device-key.pem -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -d '{"temperature": 30}' https://MyExampleHub.azure-devices.net/devices/my-x509-device/messages/events?api-version=2020-03-13
    
  • Si ha seguido las instrucciones de Uso de una cadena de certificados:

    curl -L -i -X POST --cert certs/device-01-full-chain.cert.pem --key private/device-01.key.pem -H 'Content-Type: application/json' -H 'Content-Encoding:  utf-8' -d '{"temperature": 30}' https://MyExampleHub.azure-devices.net/devices/my-x509-device/messages/events?api-version=2020-03-13
    

Una llamada correcta tendrá una respuesta similar a la siguiente:

HTTP/1.1 204 No Content
Content-Length: 0
Vary: Origin
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: aa58c075-20d9-4565-8058-de6dc8524f14
Date: Wed, 31 Aug 2022 18:34:44 GMT

Pasos siguientes