Exercice : Générer et configurer un certificat d’autorité de certification X.509 à l’aide d’OpenSSL

Effectué

Dans cet exercice, vous générez un certificat d’autorité de certification X.509 à l’aide d’OpenSSL dans Azure Cloud Shell, puis vous créez un groupe d’inscription dans votre instance DPS (Device Provisioning Service) pour les appareils IoT à approvisionner à l’aide de l’authentification X.509.

Ce certificat d’autorité de certification X.509 est utilisé pour signer les certificats d’appareil pour chaque appareil de ce groupe d’inscription. Le groupe d’inscription dans DPS a uniquement besoin d’une copie de ce certificat d’autorité de certification supérieur. Lorsqu’un appareil se connecte à DPS pour l’approvisionnement, il présente sa chaîne de certificats d’autorité qui affiche son certificat d’appareil, tous les certificats intermédiaires et le certificat d’autorité de certification supérieur.

Tâche 1 : Générer des certificats d’autorité de certification racine et intermédiaire

Dans cette section, vous générez un certificat d’autorité de certification X.509 à l’aide d’OpenSSL. Ce certificat est utilisé pour configurer une inscription de groupe dans DPS.

  1. Dans le bac à sable Azure, créez un répertoire nommé certificats, puis passez à un nouveau répertoire à l’aide des commandes suivantes :

    mkdir certificates
    cd certificates
    
  2. Téléchargez un script d’assistance et deux fichiers de configuration OpenSSL que vous utilisez pour créer des certificats X.509.

    Télécharger les fichiers

    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
    

    Mettez à jour les autorisations de script afin qu’un utilisateur puisse lire, écrire et exécuter ce script.

    chmod 700 certGen.sh
    

    Le script d’assistance et les fichiers de prise en charge sont hébergés dans le projet open source Azure/azure-iot-sdk-c hébergé sur GitHub, qui est un composant du kit de développement logiciel (SDK) Azure IoT Device. Le script d’assistance certGen.sh vous offre la possibilité de voir comment les certificats d’autorité de certification sont utilisés sans trop approfondir les spécificités de la configuration OpenSSL (ce qui n’est pas compris dans ce module).

    Pour plus d’instructions sur l’utilisation de ce script d’assistance et pour obtenir des instructions sur l’utilisation de PowerShell au lieu de Bash, consultez : Gestion de certificats d’autorité de certification de test pour des exemples et tutoriels

    Avertissement

    Les certificats créés par ce script d’assistance NE DOIVENT PAS être utilisés pour la production. Ils contiennent des mots de passe codés en dur (« 1234 »), expirent après 30 jours et sont fournis uniquement à des fins de démonstration. Lorsque vous utilisez des certificats d’autorité de certification en production, veillez à appliquer les meilleures pratiques de sécurité de votre entreprise pour la création de certificats et la gestion de la durée de vie.

    Si vous êtes intéressé, vous pouvez rapidement lire le contenu du fichier de script que vous avez téléchargé à l’aide de la commande cat.

    cat certGen.sh
    
  3. Exécutez la commande suivante pour générer des certificats racines et intermédiaires :

    ./certGen.sh create_root_and_intermediate
    

    Notez que vous avez exécuté le script avec l’option create_root_and_intermediate. Cette commande suppose que vous exécutez le script à partir du répertoire ~/certificates.

    Cette commande a généré un certificat d’autorité de certification racine nommé azure-iot-test-only.root.ca.cert.pem et l’a placé dans un répertoire ./certs (sous le répertoire des certificats que vous avez créé).

Tâche 2 : Créer une inscription de groupe (certificat X.509) dans DPS

  1. Dans le bac à sable Azure, chargez votre certificat d’autorité de certification sur votre instance de service Device Provisioning. Le nom du certificat est groupCA-sensors. Le paramètre de commande verified true permet de vérifier automatiquement le certificat lors du chargement, en ignorant la nécessité d’une étape supplémentaire pour la preuve de possession de certificat.

    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. Créez un groupe d’inscription dans votre instance 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
    

    Cette commande crée un groupe d’inscription avec les paramètres suivants :

    Paramètre Description
    --dps-name Identificateur DPS.
    --enrollment-id Nom du nouveau groupe d’inscription.
    --root-ca-name Définit la méthode d’attestation pour que le groupe d’inscription soit des certificats signés par l’autorité de certification X.509 et pointe vers le certificat d’autorité de certification que vous avez chargé dans DPS.
    --iot-hubs Configure DPS pour approvisionner les appareils de ce groupe d’inscription sur le hub IoT que vous avez créé et lié à DPS au début de ce module.
    --initial-twin-properties Définit une propriété souhaitée que tous les appareils de ce groupe d’inscription reçoivent une fois qu’ils sont approvisionnés. Les appareils utilisent la propriété properties.desired.telemetryDelay pour définir le délai de lecture et d’envoi de données de télémétrie à IoT Hub.
    allocation-policy Permet de déterminer comment un appareil est affecté à un hub IoT. Une stratégie statique vous permet de désigner un hub IoT auquel vous voulez affecter les appareils.

Vérifier votre travail

  1. Vérifiez que le fichier d’autorité de certification racine azure-iot-test-only.root.ca.cert.pem a été créé dans le dossier /certs.

    dir ~/certificates/certs/
    
  2. Vérifiez que le certificat d’autorité de certification a été chargé sur votre instance DPS (Device Provisioning Service).

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

    Examinez les informations de retour de commande. Vérifiez que le nom du certificat d’autorité de certification est groupCA-sensors comme indiqué ici.

    "name": "groupCA-sensors"
    
  3. Examinez ces informations de retour de commande pour vérifier que le groupe d’inscription DPS a été créé avec les paramètres que vous avez spécifiés dans l’instruction az iot dps certificate create de la tâche 2, étape 2.

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