Share via


Como usar certificados X.509 por HTTPS sem um SDK

Neste artigo de instruções, você provisionará um dispositivo usando certificados x.509 por HTTPS sem usar um SDK do dispositivo DPS em IoT do Azure. A maioria das linguagens fornece bibliotecas para enviar solicitações HTTP, mas, em vez de se concentrar em uma linguagem específica, neste artigo, você usará a ferramenta de linha de comando cURL para enviar e receber por HTTPS.

Você pode seguir as etapas neste artigo em um computador Linux ou Windows. No caso de execuções em WSL (Subsistema do Windows para Linux) ou em um computador Linux, você poderá inserir todos os comandos no seu sistema local em um prompt do Bash. No caso de execuções no Windows, insira todos os comandos no seu sistema local em um prompt do GitBash.

Há vários caminhos neste artigo, dependendo do tipo de entrada de registro e certificado(s) X.509 que você escolher usar. Depois de instalar os prerrequisitos, leia a Visão geral antes de continuar.

Pré-requisitos

  • Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

  • Conclua as etapas em Configurar o Serviço de Provisionamento de Dispositivos no Hub IoT com o portal do Azure.

  • Verifique se você tem o Python 3.7 ou posterior instalado no computador. Verifique sua versão do Python executando python --version ou python3 --version.

  • No caso de execuções no Windows, instale a versão mais recente do Git. Verifique se o Git foi adicionado às variáveis de ambiente que podem ser acessadas pela janela de comando. Confira Ferramentas de cliente Git do Software Freedom Conservancy para obter a versão mais recente das ferramentas git a serem instaladas, que inclui o Git Bash, o aplicativo de linha de comando que você pode usar para interagir com seu repositório Git local. No Windows, insira todos os comandos no seu sistema local em um prompt do GitBash.

  • CLI do Azure. Você tem duas opções para executar comandos da CLI do Azure neste artigo:

    • Usar o Azure Cloud Shell, um shell interativo que executa comandos da CLI no navegador. Essa opção é recomendada porque não é preciso instalar nada. Se estiver usando o Cloud Shell pela primeira vez, faça logon no portal do Azure. Siga as etapas do Guia de início rápido do Cloud Shell para Iniciar o Cloud Shell e Selecionar o ambiente Bash.
    • Opcionalmente, execute a CLI do Azure no computador local. Se a CLI do Azure já estiver instalado, execute az upgrade para atualizar a CLI e as extensões para a versão atual. Para instalar a CLI do Azure, consulte Instalar a CLI do Azure.
  • No caso de execuções em um ambiente Linux ou WSL, abra um prompt do Bash para executar comandos localmente. No caso de execuções em um ambiente do Windows, abra um prompt do GitBash.

Visão geral

Há três cenários abordados neste artigo e as etapas iniciais que você executará serão diferentes para cada um. Se você quiser:

Depois de concluir as etapas para o cenário escolhido, você poderá continuar para Registrar seu dispositivo e Enviar uma mensagem de telemetria.

Criar um certificado de dispositivo

Neste artigo, você usará um certificado X.509 para autenticar com o DPS usando um registro individual ou um grupo de registros.

Se estiver usando um registro individual, você poderá usar um certificado X.509 autoassinado ou uma cadeia de certificados composta pelo certificado do dispositivo mais um ou mais certificados de autenticação. Se estiver usando um grupo de registros, você deverá usar uma cadeia de certificados.

Importante

Para a autenticação de registro X.509, o CN (nome comum da entidade) do certificado do dispositivo é usado como a ID de registro do dispositivo. A ID de registro é uma cadeia de caracteres alfanuméricos que não diferencia maiúsculas de minúsculas e caracteres especiais: '-', '.', '_' e ':'. O último caractere deve ser alfanumérico ou um traço ('-'). O DPS dá suporte a IDs de registro com até 128 caracteres. No entanto, o nome comum da entidade em um certificado X.509 é limitado a 64 caracteres. Se você alterar o nome comum da entidade para o certificado do dispositivo nas etapas a seguir, verifique se ele segue esse formato.

Usar um certificado autoassinado

Para criar um certificado autoassinado a ser usado com um registro individual, navegue até um diretório em que você deseja criar seu certificado e siga estas etapas:

  1. Execute o comando a seguir:

    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

    A barra "/" extra fornecida para o nome da entidade (//CN=my-x509-device) só é necessária para escapar a cadeia de caracteres com o Git em plataformas Windows.

  2. Quando receber a solicitação Insira a frase secreta de PEM: , use a frase secreta 1234.

  3. Quando receber a solicitação Verificando – Insira a frase secreta de PEM: , use a frase secreta 1234 novamente.

    Um arquivo de certificado de chave pública (device-cert.pem) e um arquivo de chave privada (device-key.pem) devem ser gerados no diretório em que você executou o comando openssl.

    O arquivo de certificado tem seu CN (nome comum da entidade) definido como my-x509-device.

    The private key file is protected by the pass phrase: 1234.

  4. O arquivo de certificado é codificado em Base64. Para exibir o CN (nome comum) da entidade e outras propriedades do arquivo de certificado, insira o seguinte 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
    

Usar uma cadeia de certificados

Se estiver usando um grupo de registros, você deverá autenticar com uma cadeia de certificados. Com um registro individual, você pode usar uma cadeia de certificados ou um certificado autoassinado.

Para criar uma cadeia de certificados, siga as instruções em Criar uma cadeia de certificados X.509. Você só precisa de um dispositivo para este artigo, para que possa parar depois de criar a chave privada e a cadeia de certificados para o primeiro dispositivo.

Quando tiver terminado, você deverá ter os arquivos a seguir:

Certificado Arquivo Descrição
Certificado de Autoridade de Certificação raiz. certs/azure-iot-test-only.root.ca.cert.pem Será carregado no DPS e verificado.
Certificado de Autoridade de Certificação intermediário certs/azure-iot-test-only.intermediate.cert.pem Será usado para criar um grupo de registro no DPS.
chave privada device-01 private/device-01.key.pem Usado pelo dispositivo para verificar a propriedade do certificado do dispositivo durante a autenticação com o DPS.
device-01 certificate certs/device-01.cert.pem Usado para criar entrada de registro individual com DPS.
Certificado de cadeia completa device-01 certs/device-01-full-chain.cert.pem Apresentado pelo dispositivo para autenticar e registrar-se no DPS.

Usar um registro individual

Para criar um registro individual a ser usado para este artigo, use o comando az iot dps enrollment create.

O comando a seguir cria uma entrada de registro individual com a política de alocação padrão para a instância do DPS usando o certificado do dispositivo especificado.

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}
  • Substitua o nome do seu grupo de recursos e a instância do DPS.

  • A ID de registro é a ID de registro do dispositivo e, para registros X.509, deve corresponder ao CN (nome comum) da entidade do certificado do dispositivo.

  • O caminho do certificado é o caminho para o certificado do dispositivo.

Observação

Se estiver usando o Cloud Shell para executar comandos da CLI do Azure, você poderá usar o botão carregar para carregar o arquivo de certificado na unidade de nuvem antes de executar o comando.

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

Usar um grupo de registros

Para criar um grupo de registros a ser usado para este artigo, use o comando az iot dps enrollment-group create.

O comando a seguir cria uma entrada de grupo de registros com a política de alocação padrão para sua instância do DPS usando um certificado de AC intermediário:

az iot dps enrollment-group create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --certificate-path {path_to_your_certificate}
  • Substitua o nome do seu grupo de recursos e a instância do DPS.

  • A ID de registro é uma cadeia de caracteres alfanuméricos que não diferencia maiúsculas de minúsculas e caracteres especiais: '-', '.', '_' e ':'. O último caractere deve ser alfanumérico ou um traço ('-'). Pode ser qualquer nome que você escolher usar para o grupo de registros.

  • O caminho do certificado é o caminho para o certificado intermediário. Se você tiver seguido as instruções em Usar uma cadeia de certificados, o nome do arquivo será certs/azure-iot-test-only.intermediate.cert.pem.

Observação

Se estiver usando o Cloud Shell para executar comandos da CLI do Azure, você poderá usar o botão carregar para carregar o arquivo de certificado na unidade de nuvem antes de executar o comando.

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

Observação

Se preferir, você pode criar um grupo de registros com base em um certificado de autenticação que tenha sido carregado anteriormente e verificado com o DPS (consulte a próxima seção). Para fazer isso, especifique o nome do certificado com --ca-name e omita o parâmetro --certificate-path no comando az iot dps enrollment-group create.

Carregar e verificar um certificado de autenticação

Se estiver usando uma cadeia de certificados para um registro individual ou um grupo de registros, você deverá carregar e verificar pelo menos um certificado na cadeia de autenticações do certificado do dispositivo no DPS.

  • Para um registro individual, isso pode ser qualquer certificado de autenticação na cadeia de certificados do dispositivo.

  • Para um grupo de registros, isso pode ser o certificado definido no grupo de registros ou qualquer certificado na sua cadeia de autenticações até e incluindo o certificado de AC raiz.

Para carregar e verificar seu certificado, use o 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
  • Substitua o nome do seu grupo de recursos e a instância do DPS.

  • O caminho do certificado é o caminho para o certificado do dispositivo. Para este artigo, recomendamos que você carregue o certificado de AC raiz. Se você tiver seguido as instruções em Usar uma cadeia de certificados, o nome do arquivo será certs/azure-iot-test-only.root.ca.cert.pem.

  • O nome do certificado pode conter apenas caracteres alfanuméricos ou os seguintes caracteres especiais: -._. Nenhum espaço em branco é permitido. Por exemplo, "azure-iot-test-only-root".

Observação

Se estiver usando o Cloud Shell para executar comandos da CLI do Azure, você poderá usar o botão carregar para carregar o arquivo de certificado na unidade de nuvem antes de executar o comando.

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

Observação

As etapas nesta seção verificaram automaticamente o certificado no upload. Você também pode fazer a verificação manual do certificado. Para saber mais, confira Verificação manual da AC intermediária ou raiz.

Registre seu dispositivo

Chame a API REST Registrar dispositivo para provisionar seu dispositivo por meio do DPS.

Use o comando curl a seguir:

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

Em que:

  • -L informa ao curl para seguir redirecionamentos HTTP.

  • –i informa ao curl para incluir cabeçalhos de protocolo na saída. Esses cabeçalhos não são estritamente necessários, mas podem ser úteis.

  • -X PUT informa ao curl que esse é um comando HTTP PUT. Necessário para essa chamada à API.

  • --cert [path_to_your_device_cert] informa ao curl onde encontrar o certificado X.509 do dispositivo. Se a chave privada do dispositivo estiver protegida por uma frase secreta, você poderá adicionar a frase secreta após o caminho do certificado precedido por dois-pontos, por exemplo: --cert my-device.pem:1234.

    • Se você estiver usando um certificado autoassinado, o arquivo de certificado do dispositivo conterá apenas um único certificado X.509. Se você tiver seguido as instruções em Usar um certificado autoassinado, o nome do arquivo será device-cert.pem e a frase secreta da chave privada será 1234. Portanto, use --cert device-cert.pem:1234.

    • Se você estiver usando uma cadeia de certificados, por exemplo, ao autenticar por meio de um grupo de registros, o arquivo de certificado do dispositivo deverá conter uma cadeia de certificados válida. A cadeia de certificados deve incluir o certificado do dispositivo e todos os certificados de assinatura até e incluindo um certificado verificado. Se você tiver seguido as instruções em Usar uma cadeia de certificados para criar a cadeia de certificados, o filepath será certs/device-01-full-chain.cert.pem. Portanto, use --cert certs/device-01-full-chain.cert.pem.

  • --key [path_to_your_device_private_key] informa ao curl onde encontrar a chave privada do dispositivo.

    • Se você tiver seguido as instruções em Usar um certificado autoassinado, o nome do arquivo será device-key.pem. Portanto, use --key device-cert.pem:1234.

    • Se você tiver seguido as instruções em Usar uma cadeia de certificados, o caminho da chave será certs/device-01-full-chain.cert.pem. Portanto, use --cert certs/device-01-full-chain.cert.pem.

  • -H 'Content-Type: application/json' informa ao DPS que estamos postando conteúdo JSON e deve ser 'application/json'

  • -H 'Content-Encoding: utf-8' informa ao DPS a codificação que estamos usando para o corpo da mensagem. Defina como o valor adequado para o sistema operacional/cliente, porém, geralmente é utf-8.

  • -d '{"registrationId": "[registration_id]"}', o parâmetro –d é o 'data' ou o corpo da mensagem que estamos postando. Deve ser JSON, na forma de '{"registrationId":"[registration_id"}'. Observe que, para o curl, ele é encapsulado em aspas simples. Caso contrário, você precisará escapar das aspas duplas no JSON. Para registro X.509, a ID de registro é o CN (nome comum da entidade) do certificado do dispositivo.

  • Por fim, o último parâmetro é a URL para a qual postar. Para DPS "regular" (ou seja, não local), o ponto de extremidade do DPS global, global.azure-devices-provisioning.net é usado: https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31. Observe que você precisa substituir [dps_scope_id] e [registration_id] pelos valores apropriados.

Por exemplo:

  • Se você tiver seguido as instruções em Usar um certificado autoassinado:

    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
    
  • Se você tiver seguido as instruções em Usar uma cadeia 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
    

Uma chamada bem-sucedida terá uma resposta semelhante à seguinte:

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"}

A resposta contém uma ID de operação e um status. Nesse caso, o status é definido como assigning. O registro de DPS é, potencialmente, uma operação de execução longa e, portanto, é feito de forma assíncrona. Normalmente, você sondará o status usando a API REST de Pesquisa de status da operação para determinar quando o dispositivo foi atribuído ou se ocorreu uma falha.

Os valores de status válidos para DPS são:

  • assigned: o valor retornado da chamada de status indicará a qual Hub IoT o dispositivo foi atribuído.

  • assigning: a operação ainda está em execução.

  • disabled: o registro está desabilitado no DPS e, portanto, o dispositivo não pode ser atribuído.

  • failed: falha na atribuição. Haverá um errorCode e errorMessage retornados em um registro registrationState na resposta para indicar o que falhou.

  • unassigned

Para chamar a API Pesquisa de status da operação, use o seguinte 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

Você usará o mesmo escopo de ID, ID de registro e certificado e chave como fez na solicitação Registrar dispositivo. Use a ID da operação que foi retornada na resposta Registrar dispositivo.

Por exemplo, o comando a seguir é para o certificado autoassinado criado em Usar um certificado autoassinado. (Você precisa modificar o escopo da ID e a ID da operação.)

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

A saída a seguir mostra a resposta para um dispositivo que tenha sido atribuído com êxito. Observe que a propriedade status é assigned e que a propriedade registrationState.assignedHub está definida como o hub IoT em que o dispositivo foi provisionado.

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 a ID do dispositivo e o hub IoT atribuído. Você os usará para enviar uma mensagem de telemetria na próxima seção.

Enviar uma mensagem de telemetria

Você chama a API REST Enviar evento de dispositivo do Hub IoT para enviar telemetria para o dispositivo.

Use o comando curl a seguir:

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

Em que:

  • -X POST informa ao curl que esse é um comando HTTP POST. Necessário para essa chamada à API.

  • --cert [path_to_your_device_cert] informa ao curl onde encontrar o certificado X.509 do dispositivo. Se a chave privada do dispositivo estiver protegida por uma frase secreta, você poderá adicionar a frase secreta após o caminho do certificado precedido por dois-pontos, por exemplo: --cert my-device.pem:1234.

    • Se você estiver usando um certificado autoassinado, o arquivo de certificado do dispositivo conterá apenas um único certificado X.509. Se você tiver seguido as instruções em Usar um certificado autoassinado, o nome do arquivo será device-cert.pem e a frase secreta da chave privada será 1234. Portanto, use --cert device-cert.pem:1234.

    • Se você estiver usando uma cadeia de certificados, o arquivo de certificado do dispositivo deverá conter uma cadeia de certificados válida. Se você tiver seguido as instruções em Usar uma cadeia de certificados para criar a cadeia de certificados, o filepath será certs/device-01-full-chain.cert.pem. Portanto, use --cert certs/device-01-full-chain.cert.pem.

  • --key [path_to_your_device_private_key] informa ao curl onde encontrar a chave privada do dispositivo.

    • Se você tiver seguido as instruções em Usar um certificado autoassinado, o nome do arquivo será device-key.pem. Portanto, use --key device-cert.pem:1234.

    • Se você tiver seguido as instruções em Usar uma cadeia de certificados, o caminho da chave será certs/device-01-full-chain.cert.pem. Portanto, use --cert certs/device-01-full-chain.cert.pem.

  • -H 'Content-Type: application/json' informa ao Hub IoT que estamos postando conteúdo JSON e deve ser 'application/json'.

  • -H 'Content-Encoding: utf-8' informa ao Hub IoT a codificação que estamos usando para o corpo da mensagem. Defina como o valor adequado para o sistema operacional/cliente, porém, geralmente é utf-8.

  • -d '{"temperature": 30}', o parâmetro –d é o 'data' ou o corpo da mensagem que estamos postando. Para este artigo, estamos postando um único ponto de dados de temperatura. O tipo de conteúdo foi especificado como application/json e, portanto, para essa solicitação, o corpo é JSON. Observe que, para o curl, ele é encapsulado em aspas simples. Caso contrário, você precisará escapar das aspas duplas no JSON.

  • O último parâmetro é a URL para a qual postar. Para a API Enviar evento de dispositivo, a URL é: https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13

    • Substitua [assigned_iot_hub_name] pelo nome do hub IoT ao qual seu dispositivo foi atribuído.

    • Substitua [device_id] pela ID do dispositivo que foi atribuída quando você registrou seu dispositivo. Para dispositivos que provisionam por meio de grupos de registros, a ID do dispositivo será a ID de registro. Para registros individuais, você pode, opcionalmente, especificar uma ID do dispositivo diferente da ID de registro na entrada de registro.

Por exemplo:

  • Se você tiver seguido as instruções em Usar um certificado autoassinado:

    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
    
  • Se você tiver seguido as instruções em Usar uma cadeia 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
    

Uma chamada bem-sucedida terá uma resposta semelhante à seguinte:

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

Próximas etapas