Créer des certificats de démonstration pour tester les fonctionnalités de l’appareil IoT Edge

S’applique à :IoT Edge 1.4 checkmark IoT Edge 1.4

Important

IoT Edge 1.4 est la version prise en charge. Si vous utilisez une version antérieure, consultez l’article Mettre à jour IoT Edge.

Les appareils IoT Edge requièrent des certificats pour sécuriser la communication entre le runtime, les modules et tous les appareils en aval. Si vous n’avez pas d’autorité de certification pour créer les certificats requis, vous pouvez utiliser des certificats de démonstration pour essayer les fonctionnalités IoT Edge dans votre environnement de test. Cet article décrit les fonctionnalités des scripts de génération de certificat que IoT Edge fournit pour le test.

Avertissement

Ces certificats expirent au bout de 30 jours et ne doivent pas être utilisés dans un scénario de production.

Vous pouvez créer des certificats sur n’importe quelle machine, puis les copier sur votre appareil IoT Edge, ou générer les certificats directement sur l’appareil IoT Edge.

Prérequis

Ordinateur de développement sur lequel git est installé.

Télécharger les scripts de certificat de test et configurer le répertoire de travail

Le référentiel IoT Edge sur GitHub comprend des scripts de génération de certificat que vous pouvez utiliser pour créer des certificats de démonstration. Cette section fournit des instructions pour préparer les scripts à exécuter sur votre ordinateur, sous Windows ou Linux.

Pour créer des certificats de démonstration sur un appareil Windows, vous devez installer OpenSSL, puis cloner les scripts de génération et les configurer pour qu’ils s’exécutent localement dans PowerShell.

Installer OpenSSL

Installez OpenSSL pour Windows sur l’ordinateur que vous utilisez pour générer les certificats. Si vous avez déjà installé OpenSSL sur votre appareil Windows, assurez-vous que le fichier openssl.exe est disponible dans la variable d’environnement PATH.

Il existe plusieurs façons d’installer OpenSSL, y compris les options suivantes :

  • Plus facile : téléchargez et installez tous les fichiers binaires OpenSSL tiers, par exemple à partir d’OpenSSL sur SourceForge. Ajoutez le chemin d’accès complet à openssl.exe à votre variable d’environnement PATH.

  • Recommandé : Téléchargez le code source OpenSSL et générez les binaires sur votre machine, soit par vous-même soit avec vcpkg. Les instructions ci-dessous utilisent vcpkg pour télécharger le code source, compiler et installer OpenSSL sur votre machine Windows en suivant des étapes simples.

    1. Accédez au répertoire où vous souhaitez installer vcpkg. Suivez les instructions pour télécharger et installer vcpkg.

    2. Une fois vcpkg installé, exécutez la commande suivante à partir d’une invite PowerShell afin d’installer le package OpenSSL pour Windows x64. L’installation prend généralement 5 minutes environ.

      .\vcpkg install openssl:x64-windows
      
    3. Ajoutez <vcpkg path>\installed\x64-windows\tools\openssl à votre variable d’environnement PATH afin que le fichier openssl.exe soit appelable.

Préparer les scripts dans PowerShell

Le dépôt Git Azure IoT Edge contient des scripts permettant de générer des certificats de test. Dans cette section, vous clonez le dépôt IoT Edge et exécutez les scripts.

  1. Ouvrez une fenêtre PowerShell en mode administrateur.

  2. Clonez le référentiel Git IoT Edge, qui contient des scripts pour générer des certificats de démonstration. Utilisez la commande git clone ou téléchargez le fichier zip.

    git clone https://github.com/Azure/iotedge.git
    
  3. Créez un répertoire de travail où copier les scripts de certificat. Tous les fichiers de clés et de certificats seront créés dans ce répertoire.

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

    Si vous avez téléchargé le dépôt sous forme de fichier zip, le nom du dossier est iotedge-master et le reste du chemin est le même.

  4. Activez PowerShell pour exécuter les scripts.

    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
    
  5. Intégrez les fonctions utilisées par les scripts à l’espace de noms global de PowerShell.

    . .\ca-certs.ps1
    

    La fenêtre PowerShell affiche un avertissement signalant que les certificats générés par ce script sont destinés aux tests uniquement et ne doivent pas être utilisés dans les scénarios de production.

  6. Vérifiez qu’OpenSSL est correctement installé et qu’il n’y aura pas de collisions de noms avec des certificats existants. Si des problèmes se produisent, la sortie du script doit décrire comment les corriger sur votre système.

    Test-CACertsPrerequisites
    

Créer un certificat d’autorité de certification racine

Exécutez ce script pour générer une autorité de certification racine requise pour chaque étape de cet article.

Le certificat d’autorité de certification racine est utilisé pour créer tous les autres certificats de démonstration en vue de tester un scénario IoT Edge. Vous pouvez continuer à utiliser le même certificat d’autorité de certification racine pour créer des certificats de démonstration pour plusieurs appareils IoT Edge ou appareils en aval.

Si vous avez déjà un certificat d’autorité de certification racine dans votre dossier de travail, n’en créez pas un nouveau. Le nouveau certificat d’autorité de certification racine remplacera l’ancien, et tous les certificats en aval générés à partir de l’ancien certificat cesseront de fonctionner. Si vous souhaitez plusieurs certificats d’autorité de certification racine, assurez-vous de les gérer dans des dossiers distincts.

  1. Accédez au répertoire de travail wrkdir où vous avez placé les scripts de génération de certificat.

  2. Créez le certificat d’autorité de certification racine et faites-le signer un certificat intermédiaire. Les certificats sont tous placés dans le répertoire de travail.

    New-CACertsCertChain rsa
    

    Cette commande de script crée plusieurs fichiers de certificat et de clé, mais lorsque les articles demandent le certificat d’autorité de certification racine, utilisez le fichier suivant :

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

Ce certificat est requis avant de pouvoir créer d’autres certificats pour vos appareils IoT Edge et appareils en aval, comme décrit dans les sections suivantes.

Créer un certificat d’identité pour l’appareil IoT Edge

Les certificats d’identité d’appareil IoT Edge sont utilisés pour approvisionner des appareils IoT Edge si vous choisissez d’utiliser une authentification par certificat X.509. Si vous utilisez une clé symétrique pour l’authentification sur IoT Hub ou DPS, ces certificats ne sont pas nécessaires et vous pouvez donc ignorer cette section.

Ces certificats fonctionnent, que vous utilisiez l’approvisionnement manuel ou l’approvisionnement automatique via le Service IoT Hub Device Provisioning (DPS).

Les certificats d’identité d’appareil sont placés dans la section Approvisionnement du fichier config sur l’appareil IoT Edge.

  1. Accédez au répertoire de travail wrkdir qui contient les scripts de génération de certificat et le certificat d’autorité de certification racine.

  2. Créez la clé privée et le certificat d'identité d’appareil IoT Edge avec la commande suivante :

    New-CACertsEdgeDeviceIdentity "<device-id>"
    

    Le nom que vous passez dans cette commande correspond à l’ID de l’appareil IoT Edge dans IoT Hub.

  3. La nouvelle commande d’identité d’appareil crée plusieurs fichiers de certificat et de clé :

    Type Fichier Description
    Certificat d’identité de l’appareil certs\iot-edge-device-identity-<device-id>.cert.pem Signé par le certificat intermédiaire généré précédemment. Contient uniquement le certificat d’identité. À spécifier dans le fichier de configuration pour l’inscription individuelle DPS ou l’approvisionnement IoT Hub.
    Certificat de chaîne complète certs\iot-edge-device-identity-<device-id>-full-chain.cert.pem Contient la chaîne de certificats complète, y compris le certificat intermédiaire. À spécifier dans le fichier de configuration pour IoT Edge à présenter à DPS pour l’approvisionnement d’inscription de groupe.
    Clé privée private\iot-edge-device-identity-<device-id>.key.pem Clé privée associée au certificat d’identité de l’appareil. Doit être spécifiée dans le fichier de configuration tant que vous utilisez une sorte d’authentification par certificat (empreinte ou autorité de certification) pour DPS ou IoT Hub.

Créer des certificats d’autorité de certification IoT Edge

Ces certificats sont nécessaires pour les scénarios de passerelle, car c'est grâce au certificat de l'autorité de certification IoT Edge que l'appareil IoT Edge vérifie son identité auprès des appareils en aval. Vous pouvez ignorer cette section si vous ne connectez aucun appareil en aval à IoT Edge.

Le certificat d’autorité de certification IoT Edge gère également la création de certificats pour les modules s’exécutant sur l’appareil, mais le runtime IoT Edge peut créer un certificat temporaire si l’autorité de certification IoT Edge n’est pas configurée. Les certificats d’autorité de certification Edge sont placés dans la section Autorité de certification Edge du fichier config.toml sur l’appareil IoT Edge. Pour plus d’informations, consultez Comprendre comment Azure IoT Edge utilise les certificats.

  1. Accédez au répertoire de travail wrkdir qui contient les scripts de génération de certificat et le certificat d’autorité de certification racine.

  2. Créez la clé privée et le certificat d’autorité de certification IoT Edge avec la commande suivante. Fournissez un nom pour le certificat de l'autorité de certification. Le nom passé dans la commande New-CACertsEdgeDevice ne doit pas être identique au paramètre hostname dans le fichier config ni à l’ID de l’appareil dans IoT Hub.

    New-CACertsEdgeDevice "<CA cert name>"
    
  3. Cette commande crée plusieurs fichiers de certificat et de clé. La paire suivante de certificat et de clé doit être copiée sur un appareil IoT Edge et référencée dans le fichier config :

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

Créer des certificats d’appareils en aval

Ces certificats sont requis pour configurer un appareil IoT en aval pour un scénario de passerelle et lorsque vous souhaitez utiliser l’authentification X.509 avec IoT Hub ou DPS. Si vous souhaitez utiliser l’authentification par clé symétrique, vous ne devez créer aucun certificat pour l’appareil en aval et pouvez ignorer cette section.

Il existe deux façons d’authentifier un appareil IoT à l’aide de certificats X.509 : à l’aide de certificats auto-signés ou à l’aide de certificats signés par une autorité de certification.

  • Pour l’authentification par certificat X.509 autosigné, parfois appelée authentification par empreinte, vous devez créer des certificats et les placer sur votre appareil IoT. Ces certificats contiennent une empreinte numérique que vous partagez avec IoT Hub pour l’authentification.
  • Pour l’authentification par certificat X.509 signés par l’autorité de certification, vous avez besoin d’un certificat d’autorité de certification racine inscrit dans IoT Hub ou DPS, que vous utilisez pour signer les certificats de votre appareil IoT. Tous les appareils qui utilisent un certificat émis par le certificat d’autorité de certification racine ou un de ses certificats intermédiaires peuvent s’authentifier tant que la chaîne complète est présentée par l’appareil.

Les scripts de génération de certificats peuvent vous aider à créer des certificats de démonstration pour tester l’un de ces scénarios d’authentification.

Certificats auto-signés

Lorsque vous authentifiez un appareil IoT avec des certificats auto-signés, vous devez créer des certificats d’appareil basés sur le certificat d’autorité de certification racine de votre solution. Ensuite, vous récupérez une « empreinte » hexadécimale à partir des certificats à fournir à IoT Hub. Votre appareil IoT a également besoin d’une copie de ses certificats d’appareil afin qu’il puisse s’authentifier auprès de IoT Hub.

  1. Accédez au répertoire de travail wrkdir qui contient les scripts de génération de certificat et le certificat d’autorité de certification racine.

  2. Créez deux certificats pour l’appareil en aval (un primaire et un secondaire). Une convention d’affectation de noms pratique consiste à créer les certificats avec le nom de l’appareil IoT suivi de l’étiquette primaire ou secondaire. Par exemple :

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

    Cette commande de script crée plusieurs fichiers de certificats et de clés. Le certificat et les paires de clés suivants doivent être copiés sur l’appareil IoT en aval et référencés dans les applications qui se connectent à 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. Récupérez l’empreinte digitale SHA1 (appelée empreinte dans les contextes IoT Hub) à partir de chaque certificat. L’empreinte est une chaîne hexadécimale d’une longueur de 40 caractères. Pour afficher le certificat et trouver l’empreinte, utilisez la commande openssl suivante :

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

    Exécutez cette commande deux fois, une fois pour le certificat principal et une fois pour le certificat secondaire. Vous fournissez des empreintes pour les deux certificats lorsque vous inscrivez un nouvel appareil IoT à l’aide de certificats X.509 auto-signés.

Certificats signés par une autorité de certification

Lorsque vous authentifiez un appareil IoT avec des certificats signés par une autorité de certification, vous devez charger le certificat d’autorité de certification racine de votre solution vers IoT Hub. Utilisez le même certificat d’autorité de certification racine pour créer des certificats d’appareil à placer sur votre appareil IoT afin qu’il puisse s’authentifier sur IoT Hub.

Les certificats de cette section concernent les étapes de la série de didacticiels sur le certificat IoT Hub X. 509. Consultez Tutoriel : Comprendre le chiffrement à clé publique et l’infrastructure à clé publique X.509 pour la présentation de cette série.

  1. Chargez le fichier de certificat d’autorité de certification racine à partir de votre répertoire de travail, certs\azure-iot-test-only.root.ca.cert.pem, vers votre IoT Hub.

  2. Si la vérification automatique n’est pas sélectionnée, utilisez le code fourni dans le portail Azure pour vérifier que vous êtes propriétaire de ce certificat d’autorité de certification racine.

    New-CACertsVerificationCert "<verification code>"
    
  3. Créez une chaîne de certificats pour votre appareil en aval. Utilisez le même ID d’appareil que celui dans lequel l’appareil est inscrit auprès d’IoT Hub.

    New-CACertsDevice "<device id>"
    

    Cette commande de script crée plusieurs fichiers de certificats et de clés. Le certificat et les paires de clés suivants doivent être copiés sur l’appareil IoT en aval et référencés dans les applications qui se connectent à 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