Exercício: gerar e configurar um certificado AC X.509 usando OpenSSL

Concluído

Neste exercício, você gerará um certificado AC X.509 usando OpenSSL no Azure Cloud Shell e, em seguida, criará um grupo de registro na instância do Serviço de Provisionamento de Dispositivos (DPS) para os dispositivos de IoT a serem provisionados usando a autenticação X.509.

Esse certificado de AC X.509 é usado para conectar os certificados de dispositivo para cada dispositivo nesse grupo de registro. O grupo de registro no DPS só precisa de uma cópia desse Certificado de Autoridade de Certificação principal. Quando um dispositivo conecta-se ao DPS para provisionamento, ele apresenta sua cadeia de certificados de autoridade que mostra o certificado do dispositivo, quaisquer certificados intermediários e o Certificado de Autoridade de Certificação superior.

Tarefa 1: Gerar Certificado de Autoridade de Certificação raiz e intermediários

Nesta seção, gere um Certificado de Autoridade de Certificação X.509 usando o OpenSSL. Esse certificado é usado para configurar o registro de um grupo no DPS.

  1. Na área restrita do Azure, crie um diretório chamado certificados e, em seguida, mova-o para um novo diretório usando os comandos a seguir:

    mkdir certificates
    cd certificates
    
  2. Baixe um script auxiliar e os dois arquivos de configuração do OpenSSL que você usa para criar os certificados X.509.

    Baixar arquivos

    curl https://raw.githubusercontent.com/Azure/azure-iot-sdk-c/main/tools/CACertificates/certGen.sh --output certGen.sh
    curl https://raw.githubusercontent.com/Azure/azure-iot-sdk-c/main/tools/CACertificates/openssl_device_intermediate_ca.cnf --output openssl_device_intermediate_ca.cnf
    curl https://raw.githubusercontent.com/Azure/azure-iot-sdk-c/main/tools/CACertificates/openssl_root_ca.cnf --output openssl_root_ca.cnf
    

    Atualize as permissões de acesso ao script para que um usuário possa ler, gravar e executar.

    chmod 700 certGen.sh
    

    O script auxiliar e os arquivos de origem estão hospedados no projeto de código aberto Azure/azure-iot-sdk-c hospedado no GitHub, que é um componente do SDK do Dispositivo de Internet das Coisas do Azure. O script auxiliar certGen.sh fornece uma chance de ver como os certificados AC são usados sem se aprofundar muito nas especificidades da configuração do OpenSSL (que está fora do escopo deste módulo).

    Para obter mais instruções sobre o uso desse script auxiliar e sobre como usar o PowerShell em vez do Bash, confira: Gerenciando Certificado de Autoridade de Certificação de teste para amostras e tutoriais

    Aviso

    Os certificados criados por esse script auxiliar NÃO DEVEM ser utilizados em produção. Eles contêm senhas embutidas em código ("1234"), expiram após 30 dias e são fornecidos apenas para fins de demonstração. Ao usar Certificado de Autoridade de Certificação na produção, certifique-se de aplicar as melhores práticas de segurança da sua empresa para a criação de certificados e o gerenciamento do tempo de vida.

    Se estiver interessado, você pode ler rapidamente o conteúdo do arquivo do script baixado usando o comando cat.

    cat certGen.sh
    
  3. Insira o seguinte comando para gerar os certificados raiz e intermediário:

    ./certGen.sh create_root_and_intermediate
    

    Observe que você executou o script com a opção create_root_and_intermediate. Esse comando pressupõe que você esteja executando o script no diretório ~/certificates.

    Esse comando gerou um Certificado de Autoridade de Certificação raiz chamado azure-iot-test-only.root.ca.cert.pem e o posicionou em um diretório ./certs (no diretório de certificados que você criou).

Tarefa 2: Criar um registro de grupo (certificado X.509) no DPS

  1. Na área restrita do Azure, carregue o Certificado de Autoridade de Certificação na instância do Serviço de Provisionamento de Dispositivos. O nome do certificado é groupCA-sensors. O parâmetro de comando verified true permite que o certificado seja verificado automaticamente no upload, ignorando a necessidade de uma etapa extra para a geração da prova de posse do certificado.

    az iot dps certificate create --dps-name dps-$suffix --certificate-name groupCA-sensors --path ~/certificates/certs/azure-iot-test-only.root.ca.cert.pem --verified true
    
  2. Criar um grupo de registro na sua instância do DPS.

    az iot dps enrollment-group create --dps-name dps-$suffix --enrollment-id enrollgroup-sensors --root-ca-name groupCA-sensors --iot-hubs hub-$suffix.azure-devices.net --initial-twin-properties "{'telemetryDelay':'1'}" --allocation-policy static
    

    Esse comando cria um grupo de registro com os seguintes parâmetros:

    Parâmetro Descrição
    --dps-name O identificador do DPS.
    --enrollment-id O nome do novo grupo de registro.
    --root-ca-name Define o método de atestado para o grupo de inscrição como sendo certificados X.509 assinados por AC e aponta para o Certificado de Autoridade de Certificação que você carregou no DPS.
    --iot-hubs Configura o DPS para provisionar os dispositivos desse grupo de registro para o Hub IoT do Azure que você criou e vinculou ao DPS no início deste módulo.
    --initial-twin-properties Define uma propriedade desejada que todos os dispositivos nesse grupo de registro recebem uma vez provisionados. Os dispositivos usam a propriedade properties.desired.telemetryDelay para definir o atraso de tempo para leitura e envio de telemetria ao Hub IoT do Azure.
    allocation-policy Instruções usadas para determinar como um dispositivo é atribuído a um Hub IoT. Uma política estática permite que você projete um único Hub IoT do Azure ao qual deseja atribuir dispositivos.

Verifique seu trabalho

  1. Verifique se o arquivo AC raiz azure-iot-test-only.root.ca.cert.pem foi criado na pasta /certs.

    dir ~/certificates/certs/
    
  2. Verifique se o Certificado de Autoridade de Certificação foi carregado em sua instância do DPS (Serviço de Provisionamento de Dispositivos).

    az iot dps certificate show --certificate-name groupCA-sensors --dps-name dps-$suffix
    

    Examine as informações de retorno do comando. Verifique se o nome do Certificado de Autoridade de Certificação é groupCA-sensors, conforme mostrado aqui.

    "name": "groupCA-sensors"
    
  3. Examine as informações de retorno desse comando para verificar se o grupo de registro DPS foi criado com os parâmetros que você especificou na instrução az iot dps certificate create na tarefa 2, etapa 2.

    az iot dps enrollment-group show --dps-name dps-$suffix --enrollment-id enrollgroup-sensors