Gérer les certificats IoT Edge

S’applique à :Coche IoT Edge 1.5 IoT Edge 1.5 Coche IoT Edge 1.4 IoT Edge 1.4

Important

IoT Edge 1.5 LTS et IoT Edge 1.4 LTS sont versions prises en charge. IoT Edge 1.4 LTS est fin de vie le 12 novembre 2024. Si vous utilisez une version antérieure, consultez l’article Mettre à jour IoT Edge.

Tous les appareils IoT Edge utilisent des certificats pour créer des connexions sécurisées entre le runtime et les modules en cours d’exécution sur l’appareil. Les appareils IoT Edge fonctionnant en tant que passerelles utilisent également ces mêmes certificats pour se connecter à leurs appareils en aval.

Remarque

Le terme autorité de certification racine utilisé dans cet article fait référence au certificat de la plus grande autorité de la chaîne de certificats pour votre solution IoT. Vous n’avez pas besoin d’utiliser la racine du certificat d’une autorité de certification syndiquée ou la racine de l’autorité de certification de votre organisation. Bien souvent, il s’agit en fait d’un certificat d’une autorité de certification intermédiaire.

Prérequis

  • Vous devez connaître les concepts présentés dans Comprendre comment Azure IoT Edge utilise les certificats, en particulier la façon dont IoT Edge utilise les certificats.

  • Un appareil IoT Edge.

    Si vous n’avez aucun appareil IoT Edge configuré, vous pouvez en créer un sur une machine virtuelle Azure. Suivez les étapes décrites dans l’un des articles de démarrage rapide pour créer un appareil Linux virtuel ou créer un appareil Windows virtuel.

  • Possibilité de modifier le fichier config.toml de configuration IoT Edge en suivant le modèle de configuration.

  • Si votre config.toml n’est pas basé sur le modèle, ouvrez le modèle et utilisez les instructions commentées pour ajouter des sections de configuration en suivant la structure du modèle.

  • Si vous avez une nouvelle installation IoT Edge qui n’a pas été configurée, copiez le modèle pour initialiser la configuration. N’utilisez pas cette commande si vous avez une configuration existante. Il remplace le fichier.

    sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
    

Exigences en matière de format

Conseil

  • Un certificat peut être encodé dans une représentation binaire appelée DER (Distinguished Encoding Rules) ou dans une représentation textuelle appelée PEM (Privacy Enhanced Mail). Le format PEM comprend un en-tête -----BEGIN CERTIFICATE----- suivi de la représentation DER encodée en base64, suivie d’un pied de page -----END CERTIFICATE-----.
  • Comme pour le certificat, la clé privée peut être encodée en DER binaire ou en PEM de représentation textuelle.
  • Étant donné que PEM est délimité, il est également possible de construire un PEM qui combine à la fois CERTIFICATE et PRIVATE KEY séquentiellement dans le même fichier.
  • Enfin, le certificat et la clé privée peuvent être encodés ensemble dans une représentation binaire appelée PKCS#12, chiffrée avec un mot de passe facultatif.

Les extensions de fichier sont arbitraires et vous devez exécuter la commande file ou afficher le type de fichier. En général, les fichiers utilisent les conventions d’extension suivantes :

  • .cer est un certificat au format DER ou PEM.
  • .pem est un certificat, une clé privée ou les deux au format PEM.
  • .pfx est un fichier PKCS#12 .

IoT Edge nécessite que le certificat et la clé privée soient :

  • Format PEM
  • Fichiers distincts
  • Dans la plupart des cas, avec la chaîne complète

Si vous obtenez un .pfx fichier à partir de votre fournisseur PKI, il s’agit probablement du certificat et de la clé privée encodés ensemble dans un seul fichier. Vérifiez qu’il s’agit d’un type de fichier PKCS#12 à l’aide de la commandefile. Vous pouvez convertir un fichier PKCS#12 .pfx en fichiers PEM à l’aide de la commande openssl pkcs12.

Si votre fournisseur PKI fournit un fichier.cer, il peut contenir le même certificat que le .pfx, ou il peut s’agir du certificat d’émission du fournisseur PKI (racine). Pour vérifier, inspectez le fichier avec la commande openssl x509. S’il s’agit du certificat d’émission :

  • S’il est au format DER (binaire), convertissez-le en PEM avec openssl x509 -in cert.cer -out cert.pem.
  • Utilisez le fichier PEM comme pack d’approbation. Pour plus d’informations sur le pack d’approbation, consultez la section suivante.

Important

Votre infrastructure PKI doit prendre en charge les clés RSA 2048 bits et les clés EC P-256. Par exemple, vos serveurs EST doivent prendre en charge ces types de clés. Vous pouvez utiliser d’autres types de clés, mais nous testons uniquement les clés RSA 2048 bits et les clés EC P-256.

Spécifications relatives aux autorisations

Le tableau suivant répertorie les autorisations de fichier et de répertoire requises pour les certificats IoT Edge. Le répertoire préféré pour les certificats est /var/aziot/certs/ et /var/aziot/secrets/ pour les clés.

Fichier ou répertoire Autorisations Owner
/var/aziot/certs/ répertoire certificats drwxr-xr-x (755) aziotcs
Fichiers de certificat dans /var/aziot/certs/ -wr-r--r-- (644) aziotcs
/var/aziot/secrets/ répertoire clés drwx------ (700) aziotks
Fichiers clés dans /var/aziot/secrets/ -wr------- (600) aziotks

Pour créer les répertoires, définissez les autorisations et définissez le propriétaire, exécutez les commandes suivantes :

# If the certificate and keys directories don't exist, create, set ownership, and set permissions
sudo mkdir -p /var/aziot/certs
sudo chown aziotcs:aziotcs /var/aziot/certs
sudo chmod 755 /var/aziot/certs

sudo mkdir -p /var/aziot/secrets
sudo chown aziotks:aziotks /var/aziot/secrets
sudo chmod 700 /var/aziot/secrets

# Give aziotcs ownership to certificates
# Read and write for aziotcs, read-only for others
sudo chown -R aziotcs:aziotcs /var/aziot/certs
sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;

# Give aziotks ownership to private keys
# Read and write for aziotks, no permission for others
sudo chown -R aziotks:aziotks /var/aziot/secrets
sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;

# Verify permissions of directories and files
sudo ls -Rla /var/aziot

La sortie de la liste avec la propriété et l’autorisation correctes est similaire à ce qui suit :

azureUser@vm:/var/aziot$ sudo ls -Rla /var/aziot
/var/aziot:
total 16
drwxr-xr-x  4 root    root    4096 Dec 14 00:16 .
drwxr-xr-x 15 root    root    4096 Dec 14 00:15 ..
drwxr-xr-x  2 aziotcs aziotcs 4096 Jan 14 00:31 certs
drwx------  2 aziotks aziotks 4096 Jan 23 17:23 secrets

/var/aziot/certs:
total 20
drwxr-xr-x 2 aziotcs aziotcs 4096 Jan 14 00:31 .
drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
-rw-r--r-- 1 aziotcs aziotcs 1984 Jan 14 00:24 azure-iot-test-only.root.ca.cert.pem
-rw-r--r-- 1 aziotcs aziotcs 5887 Jan 14 00:27 iot-edge-device-ca-devicename-full-chain.cert.pem

/var/aziot/secrets:
total 16
drwx------ 2 aziotks aziotks 4096 Jan 23 17:23 .
drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
-rw------- 1 aziotks aziotks 3243 Jan 14 00:28 iot-edge-device-ca-devicename.key.pem

Gérer l’autorité de certification racine approuvée (Pack d’approbation)

L’utilisation d’un certificat d’autorité de certification auto-signée comme racine d’approbation avec IoT Edge et modules est appelée pack d’approbation. L’offre groupée d’approbations est disponible pour IoT Edge et les modules pour communiquer avec les serveurs. Pour configurer l’offre groupée d’approbations, spécifiez son chemin de fichier dans le fichier de configuration IoT Edge.

  1. Obtenez le certificat d’autorité de certification auprès d’un fournisseur PKI.

  2. Vérifiez que le certificat répond aux exigences de format.

  3. Copiez le fichier PEM et donnez au certificat de IoT Edge l’accès au service. Par exemple, avec le répertoire /var/aziot/certs :

    # Make the directory if doesn't exist
    sudo mkdir /var/aziot/certs -p
    
    # Change cert directory user and group ownership to aziotcs and set permissions
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    # Copy certificate into certs directory
    sudo cp root-ca.pem /var/aziot/certs
    
    # Give aziotcs ownership to certificate and set read and write permission for aziotcs, read-only for others
    sudo chown aziotcs:aziotcs /var/aziot/certs/root-ca.pem
    sudo chmod 644 /var/aziot/certs/root-ca.pem
    
  4. Dans le fichier config IoT Edge config.toml, recherchez la section Trust bundle cert. Si la section est manquante, vous pouvez la copier à partir du fichier de modèle de configuration.

    Conseil

    Si le fichier config n’existe pas encore sur votre appareil, utilisez /etc/aziot/config.toml.edge.template comme modèle pour en créer un.

  5. Définissez la clé trust_bundle_cert sur l’emplacement du fichier de certificat.

    trust_bundle_cert = "file:///var/aziot/certs/root-ca.pem"
    
  6. Appliquez la configuration.

    sudo iotedge config apply
    

Installer l’autorité de certification racine sur le magasin de certificats du système d’exploitation

L’installation du certificat dans le fichier de bundle d’approbation le rend disponible pour les modules de conteneur, mais pas pour héberger des modules tels qu’Azure Device Update ou Defender. Si vous utilisez des composants au niveau de l’hôte ou rencontrez d’autres problèmes TLS, installez également le certificat d’autorité de certification racine dans le magasin de certificats du système d’exploitation :

sudo cp /var/aziot/certs/my-root-ca.pem /usr/local/share/ca-certificates/my-root-ca.pem.crt

sudo update-ca-certificates

Importez vos fichiers de certificat et de clé privée.

IoT Edge peut utiliser des certificats et des fichiers de clé privée existants pour s’authentifier ou attester de son identité auprès d’Azure, émettre de nouveaux certificats de serveur de module et s’authentifier auprès des serveurs EST. Pour les installer :

  1. Vérifiez que les fichiers de certificat et de clé privée répondent aux exigences de format.

  2. Copiez le fichier PEM sur l’appareil IoT Edge où IoT Edge modules peuvent avoir accès. Par exemple, le répertoire /var/aziot/.

    # If the certificate and keys directories don't exist, create, set ownership, and set permissions
    sudo mkdir -p /var/aziot/certs
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    sudo mkdir -p /var/aziot/secrets
    sudo chown aziotks:aziotks /var/aziot/secrets
    sudo chmod 700 /var/aziot/secrets
    
    # Copy certificate and private key into the correct directory
    sudo cp my-cert.pem /var/aziot/certs
    sudo cp my-private-key.pem /var/aziot/secrets
    
  3. Accordez la propriété au service de certificat de IoT Edge etaziotcs le service de clé aziotkssur le certificat et la clé privée, respectivement.

    # Give aziotcs ownership to certificate
    # Read and write for aziotcs, read-only for others
    sudo chown aziotcs:aziotcs /var/aziot/certs/my-cert.pem
    sudo chmod 644 /var/aziot/certs/my-cert.pem
    
    # Give aziotks ownership to private key
    # Read and write for aziotks, no permission for others
    sudo chown aziotks:aziotks /var/aziot/secrets/my-private-key.pem
    sudo chmod 600 /var/aziot/secrets/my-private-key.pem
    
  4. Dans config.toml, recherchez la section appropriée pour le type de certificat à configurer. Par exemple, vous pouvez rechercher le mot clé cert.

  5. À l’aide de l’exemple du modèle de configuration, configurez le certificat d’identité de l’appareil ou les fichiers d’autorité de certification Edge. L’exemple de modèle est le suivant :

    cert = "file:///var/aziot/certs/my-cert.pem"
    pk = "file:///var/aziot/secrets/my-private-key.pem"
    
  6. Appliquer la configuration

    sudo iotedge config apply
    

Pour éviter les erreurs lors de l’expiration des certificats, n’oubliez pas de mettre à jour manuellement les fichiers et la configuration avant l’expiration du certificat.

Exemple : Utiliser des fichiers de certificat d’identité d’appareil à partir du fournisseur PKI

Demandez un certificat client TLS et une clé privée à votre fournisseur PKI.

Exigences concernant le certificat d’identité d’appareil :

  • Extensions de certificat client standard : extendedKeyUsage = clientAuth keyUsage = critical, digitalSignature
  • Identificateurs de clé pour faciliter la distinction entre les autorités de certification émettrices portant le même CN pour la rotation des certificats d’autorité de certification.
    • subjectKeyIdentifier = hash
    • authorityKeyIdentifier = keyid:always,issuer:always

Assurez-vous que le nom commun (CN) correspond à l’ID d’appareil IoT Edge inscrit avec IoT Hub ou l’ID d’inscription auprès de DPS. Par exemple, dans le certificat d’identité d’appareil suivant, Subject: CN = my-device est le champ important qui doit correspondre.

Exemple de certificat d’identité d’appareil :

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 48 (0x30)
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: CN = myPkiCA
        Validity
            Not Before: Jun 28 21:27:30 2022 GMT
            Not After : Jul 28 21:27:30 2022 GMT
        Subject: CN = my-device
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:ad:b0:63:1f:48:19:9e:c4:9d:91:d1:b0:b0:e5:
                    ...
                    80:58:63:6d:ab:56:9f:90:4e:3f:dd:df:74:cf:86:
                    04:af
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature
            X509v3 Extended Key Usage:
                TLS Web Client Authentication
            X509v3 Subject Key Identifier:
                C7:C2:DC:3C:53:71:B8:42:15:D5:6C:4B:5C:03:C2:2A:C5:98:82:7E
            X509v3 Authority Key Identifier:
                keyid:6E:57:C7:FC:FE:50:09:75:FA:D9:89:13:CB:D2:CA:F2:28:EF:9B:F6

    Signature Algorithm: ecdsa-with-SHA256
         30:45:02:20:3c:d2:db:06:3c:d7:65:b7:22:fe:df:9e:11:5b:
         ...
         eb:da:fc:f1:6a:bf:31:63:db:5a:16:02:70:0f:cf:c8:e2
-----BEGIN CERTIFICATE-----
MIICdTCCAhugAwIBAgIBMDAKBggqhkjOPQQDAjAXMRUwEwYDVQQDDAxlc3RFeGFt
...
354RWw+eLOpQSkTqXxzjmfw/kVOOAQIhANvRmyCQVb8zLPtqdOVRkuva/PFqvzFj
21oWAnAPz8ji
-----END CERTIFICATE-----

Conseil

Pour tester sans accéder aux fichiers de certificat fournis par une infrastructure À clé publique, consultez Créer des certificats de démonstration pour tester les fonctionnalités de l’appareil afin de générer un certificat d’identité d’appareil de non-production de courte durée et une clé privée.

Exemple de configuration lors de l’approvisionnement avec IoT Hub :

[provisioning]
source = "manual"
# ...
[provisioning.authentication]
method = "x509"

identity_cert = "file:///var/aziot/device-id.pem"
identity_pk = "file:///var/aziot/device-id.key.pem"

Exemple de configuration lors de l’approvisionnement avec DPS :

[provisioning]
source = "dps"
# ...
[provisioning.attestation]
method = "x509"
registration_id = "my-device"

identity_cert = "file:///var/aziot/device-id.pem"
identity_pk = "file:///var/aziot/device-id.key.pem"

La surcharge liée à la gestion manuelle des certificats peut être risquée et sujette aux erreurs. Pour la production, il est recommandé d’utiliser IoT Edge avec la gestion automatique des certificats.

Gérer l’autorité de certification Edge

L’autorité de certification Edge a deux modes différents :

  • Démarrage rapide est le comportement par défaut. Le démarrage rapide est destiné aux tests et n’est pas adapté à la production.
  • Le mode production nécessite que vous fournissiez votre propre source pour le certificat d’autorité de certification Edge et la clé privée.

Démarrage rapide De l’autorité de certification Edge

Pour faciliter la prise en main, IoT Edge génère automatiquement un certificat d’autorité de certification Edge lorsqu’il est démarré pour la première fois par défaut. Ce certificat auto-signé est conçu uniquement pour les scénarios de développement et de test, et non pour la production. Par défaut, le certificat expire après 90 jours. L’expiration peut être configurée. Ce comportement est appelé l’autorité de certification Edge de démarrage rapide.

Le démarrage rapide de l’autorité de certification Edge permet edgeHub à d’autres modules IoT Edge d’avoir un certificat de serveur valide lorsque IoT Edge est installé pour la première fois sans configuration. Le certificat est nécessaire, edgeHub car les modules ou les appareils en aval doivent établir des canaux de communication sécurisés. Sans l’autorité de certification Edge de démarrage rapide, la prise en main serait beaucoup plus difficile, car vous devrez fournir un certificat de serveur valide à partir d’un fournisseur PKI ou avec des outils tels que openssl.

Important

N’utilisez jamais l’autorité de certification Edge de démarrage rapide pour la production, car le certificat généré localement n’est pas connecté à une infrastructure À clé publique.

La sécurité d’une identité basée sur des certificats dérive d’une infrastructure PKI bien gérée dans laquelle le certificat (un document) n’est qu’un composant. Une infrastructure PKI bien gérée permet la définition, l’application, la gestion et l’application des stratégies de sécurité à inclure, mais sans s’y limiter, la gestion de l’émission, de la révocation et du cycle de vie des certificats.

Personnaliser la durée de vie pour l’autorité de certification Edge de démarrage rapide

Pour configurer l’expiration du certificat sur une valeur autre que la valeur par défaut de 90 jours, ajoutez la valeur en jours à la section Edge CA certificate (Quickstart) du fichier config.

[edge_ca]
auto_generated_edge_ca_expiry_days = 180

Supprimez le contenu des dossiers /var/lib/aziot/certd/certs et /var/lib/aziot/keyd/keys pour supprimer tous les certificats générés précédemment puis appliquer la configuration

Renouveler l’autorité de certification Edge de démarrage rapide

Par défaut, IoT Edge renouvelle automatiquement le certificat d’autorité de certification Edge démarrage rapide lorsque 80 % de la durée de vie du certificat est atteinte. Par exemple, si un certificat a une durée de vie de 90 jours, IoT Edge régénère automatiquement le certificat de l’autorité de certification Edge à 72 jours de son émission.

Pour modifier la logique de renouvellement automatique, ajoutez les paramètres suivants à la section Certificat d’autorité de certification Edge dans config.toml. Par exemple :

[edge_ca.auto_renew]
rotate_key = true
threshold = "70%"
retry = "2%"

Autorité de certification Edge en production

Une fois que vous passez à un scénario de production ou que vous souhaitez créer un appareil de passerelle, vous ne pouvez plus utiliser l’autorité de certification Edge de démarrage rapide.

Une option consiste à fournir vos propres certificats et à les gérer manuellement. Toutefois, pour éviter le processus de gestion manuelle des certificats risqué et sujet aux erreurs, utilisez un serveur EST chaque fois que possible.

Attention

Le nom commun (CN) du certificat d’autorité de certification Edge ne peut pas correspondre au paramètre de nom d’hôte de l’appareil défini dans le fichier config config.toml de l’appareil ou l’ID de l’appareil inscrit dans IoT Hub.

Planifier le renouvellement de l’autorité de certification Edge

Lorsque le certificat d’autorité de certification Edge est renouvelé, tous les certificats qu’il a émis, comme les certificats de serveur de module, sont régénérés. Pour donner aux modules de nouveaux certificats serveur, IoT Edge redémarre tous les modules lors du renouvellement du certificat d’autorité de certification Edge.

Pour réduire les effets négatifs potentiels des redémarrages de module, prévoyez de renouveler le certificat d’autorité de certification Edge à un moment spécifique (par exemple, threshold = "10d") et informez les personnes dépendantes de la solution du temps d’arrêt.

Exemple : utiliser des fichiers de certificat d’autorité de certification Edge à partir du fournisseur PKI

Demandez les fichiers suivants à votre fournisseur PKI :

  • Certificat d’autorité de certification racine de l’infrastructure à clé publique
  • Certificat d’émission/d’autorité de certification et clé privée associée

Pour que le certificat d’autorité de certification émettrice devienne l’autorité de certification Edge, il doit avoir les extensions suivantes :

subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
basicConstraints = critical, CA:TRUE, pathlen:0
keyUsage = critical, digitalSignature, keyCertSign

Exemple de certificat d’autorité de certification Edge résultant :

openssl x509 -in my-edge-ca-cert.pem -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 4098 (0x1002)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = myPkiCA
        Validity
            Not Before: Aug 27 00:00:50 2022 GMT
            Not After : Sep 26 00:00:50 2022 GMT
        Subject: CN = my-edge-ca.ca
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (4096 bit)
                Modulus:
                    00:e1:cb:9c:c0:41:d2:ee:5d:8b:92:f9:4e:0d:3e:
                    ...
                    25:f5:58:1e:8c:66:ab:d1:56:78:a5:9c:96:eb:01:
                    e4:e3:49
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                FD:64:48:BB:41:CE:C1:8A:8A:50:9B:2B:2D:6E:1D:E5:3F:86:7D:3E
            X509v3 Authority Key Identifier:
                keyid:9F:E6:D3:26:EE:2F:D7:84:09:63:84:C8:93:72:D5:13:06:8E:7F:D1
            X509v3 Basic Constraints: critical
                CA:TRUE, pathlen:0
            X509v3 Key Usage: critical
                Digital Signature, Certificate Sign
    Signature Algorithm: sha256WithRSAEncryption
         20:c9:34:41:a3:a4:8e:7c:9c:6e:17:f5:a6:6f:e5:fc:6e:59:
         ...
         7c:20:5d:e5:51:85:4c:4d:f7:f8:01:84:87:27:e3:76:65:47:
         9e:6a:c3:2e:1a:f0:dc:9d
-----BEGIN CERTIFICATE-----
MIICdTCCAhugAwIBAgIBMDAKBggqhkjOPQQDAjAXMRUwEwYDVQQDDAxlc3RFeGFt
...
354RWw+eLOpQSkTqXxzjmfw/kVOOAQIhANvRmyCQVb8zLPtqdOVRkuva/PFqvzFj
21oWAnAPz8ji
-----END CERTIFICATE-----

Une fois que vous avez reçu les derniers fichiers, mettez à jour le bundle d’approbations :

trust_bundle_cert = "file:///var/aziot/root-ca.pem"

Ensuite, configurez IoT Edge pour utiliser les fichiers de certificat et de clé privée :

[edge_ca]
cert = "file:///var/aziot/my-edge-ca-cert.pem"
pk = "file:///var/aziot/my-edge-ca-private-key.key.pem"

Si vous avez déjà utilisé d’autres certificats pour IoT Edge sur l’appareil, supprimez les fichiers dans /var/lib/aziot/certd/certs et les clés privées associées aux certificats (pas toutes les clés) dans /var/lib/aziot/keyd/keys. IoT Edge les recrée avec le nouveau certificat d’autorité de certification que vous avez fourni.

Cette approche vous oblige à mettre à jour manuellement les fichiers à mesure que le certificat expire. Pour éviter ce problème, envisagez d’utiliser EST pour la gestion automatique.

Gestion automatique des certificats avec le serveur EST

IoT Edge pouvez interagir avec un serveur d’inscription sur un serveur de transport sécurisé (EST) pour l’émission et le renouvellement automatiques de certificat. L’utilisation d’EST est recommandée pour la production, car elle remplace la nécessité d’une gestion manuelle des certificats, qui peut être risquée et sujette aux erreurs. Il peut être configuré globalement et remplacé pour chaque type de certificat.

Dans ce scénario, le certificat d’amorçage et la clé privée sont censés être de longue durée et potentiellement installés sur l’appareil pendant la fabrication. IoT Edge utilise les informations d’identification de démarrage pour s’authentifier auprès du serveur EST pour la requête initiale d’émission d’un certificat d’identité pour les requêtes suivantes et pour l’authentification auprès de DPS ou d’IoT Hub.

  1. Obtenez l’accès à un serveur EST. Si vous n’avez pas de serveur EST, utilisez l’une des options suivantes pour commencer le test :

  2. Dans le fichier config.tomlde configuration de l’appareil IoT Edge , configurez le chemin d’accès à un certificat racine approuvé que IoT Edge utilise pour valider le certificat TLS du serveur EST. Cette étape est facultative si le serveur EST a un certificat TLS racine approuvé publiquement.

    [cert_issuance.est]
    trusted_certs = [
       "file:///var/aziot/root-ca.pem",
    ]
    
  3. Fournissez une URL par défaut pour le serveur EST. Dans config.toml, ajoutez la section suivante avec l’URL du serveur EST :

    [cert_issuance.est.urls]
    default = "https://example.org/.well-known/est"
    
  4. Pour configurer le certificat EST pour l’authentification, ajoutez la section suivante avec le chemin d’accès au certificat et à la clé privée :

    [cert_issuance.est.auth]
    bootstrap_identity_cert = "file:///var/aziot/my-est-id-bootstrap-cert.pem"
    bootstrap_identity_pk = "file:///var/aziot/my-est-id-bootstrap-pk.key.pem"
    
    [cert_issuance.est.identity_auto_renew]
    rotate_key = true
    threshold = "80%"
    retry = "4%"
    
  5. Appliquez les modifications de la configuration.

    sudo iotedge config apply
    

Les paramètres dans [cert_issuance.est.identity_auto_renew] sont abordés dans la section suivante.

Authentification par nom d'utilisateur et mot de passe

Si l’authentification auprès du serveur EST à l’aide d’un certificat n’est pas possible, vous pouvez utiliser un secret partagé ou un nom d’utilisateur et un mot de passe à la place.

[cert_issuance.est.auth]
username = "username"
password = "password"

Configurer les paramètres de renouvellement automatique

Au lieu de gérer manuellement les fichiers de certificat, IoT Edge dispose de la possibilité intégrée d’obtenir et de renouveler des certificats avant l’expiration. Le renouvellement des certificats nécessite une méthode d’émission qu’IoT Edge peut gérer. L’inscription sur un serveur de transport sécurisé (EST) est une méthode d’émission, mais IoT Edge peut également renouveler automatiquement l’autorité de certification de démarrage rapide par défaut. Le renouvellement des certificats est configuré par type de certificat.

  1. Dans config.toml, recherchez la section appropriée pour le type de certificat à configurer. Par exemple, vous pouvez rechercher le mot clé auto_renew.

  2. À l’aide de l’exemple du modèle de configuration, configurez le certificat d’identité de l’appareil, l’autorité de certification Edge ou les certificats d’identité EST. L’exemple de modèle est le suivant :

    [REPLACE_WITH_CERT_TYPE]
    # ...
    method = "est"
    # ...
    
    [REPLACE_WITH_CERT_TYPE.auto_renew]
    rotate_key = true
    threshold = "80%" 
    retry = "4%"
    
  3. Appliquer la configuration

    sudo iotege config apply
    

Le tableau suivant répertorie ce que fait chaque option dans auto_renew :

Paramètre Description
rotate_key Contrôle si la clé privée doit être pivotée quand IoT Edge renouvelle le certificat.
threshold Définit quand IoT Edge doit commencer le renouvellement du certificat. Il peut être spécifié sous forme de :
Pourcentage : entier compris entre 0 et 100, suivi de %. Le renouvellement commence selon la durée de vie du certificat. Par exemple, lorsqu’il est défini sur 80%, un certificat valide pendant 100 jours commence le renouvellement 20 jours avant son expiration.
Heure absolue : entier suivi de min (minutes) ou day (jours). Le renouvellement commence selon l’heure d’expiration du certificat. Par exemple, lorsqu’il est défini 4day pour quatre jours ou sur 10min pour 10 minutes, le certificat commence le renouvellement à cette heure-ci avant l’expiration. Pour éviter une mauvaise configuration involontaire où threshold est supérieure à la durée de vie du certificat, nous vous recommandons plutôt d’utiliser, si possible, un pourcentage.
retry Contrôle la fréquence à laquelle le renouvellement doit être retenté en cas d’échec. Comme threshold, il peut également être spécifié sous la forme d’un pourcentage ou d’une heure absolue à l’aide du même format.

Exemple : renouveler automatiquement le certificat d’identité de l’appareil avec EST

Pour utiliser EST et IoT Edge pour l’émission et le renouvellement automatiques de certificat d’identité d’appareil, ce qui est recommandé pour la production, IoT Edge devez provisionner dans le cadre d’un groupe d’inscription basé sur l’autorité de certification DPS. Par exemple :

## DPS provisioning with X.509 certificate
[provisioning]
source = "dps"
# ...
[provisioning.attestation]
method = "x509"
registration_id = "my-device"

[provisioning.attestation.identity_cert]
method = "est"
common_name = "my-device"

[provisioning.attestation.identity_cert.auto_renew]
rotate_key = true
threshold = "80%"
retry = "4%"

Le renouvellement automatique de l’autorité de certification Edge doit être activé lorsque la méthode d’émission est définie sur EST. L’expiration de l’autorité de certification Edge doit être évitée car elle interrompt de nombreuses fonctionnalités IoT Edge. Si une situation nécessite un contrôle total sur le cycle de vie des certificats d’autorité de certification Edge, utilisez plutôt la méthode de gestion manuelle de l’autorité de certification Edge .

N’utilisez pas EST ou auto_renew avec d’autres méthodes d’approvisionnement, notamment l’approvisionnement manuel X.509 avec IoT Hub et DPS avec inscription individuelle. IoT Edge ne pouvez pas mettre à jour les empreintes de certificat dans Azure lors du renouvellement d’un certificat, ce qui empêche IoT Edge de se reconnecter.

Exemple : gestion automatique de l’autorité de certification Edge avec EST

Utilisez l’émission et le renouvellement automatiques de l’autorité de certification Edge EST pour la production. Une fois le serveur EST configuré, vous pouvez utiliser le paramètre global ou le remplacer comme dans cet exemple :

[edge_ca]
method = "est"

common_name = "my-edge-CA"
url = "https://ca.example.org/.well-known/est"

bootstrap_identity_cert = "file:///var/aziot/my-est-id-bootstrap-cert.pem"
bootstrap_identity_pk = "file:///var/aziot/my-est-id-bootstrap-pk.key.pem"

[edge_ca.auto_renew]
rotate_key = true
threshold = "90%"
retry = "2%"

Certificats de serveur de modules

Edge Daemon émet un serveur de modules et des certificats d’identité pour une utilisation par les modules Edge. Il reste de la responsabilité des modules Edge de renouveler leur identité et leurs certificats de serveur en fonction des besoins.

Renouvellement

Les certificats de serveur peuvent être émis à partir du certificat d’autorité de certification Edge. Quelle que soit la méthode d’émission, ces certificats doivent être renouvelés par le module. Si vous développez un module personnalisé, vous devez implémenter la logique de renouvellement dans votre module.

Le module edgeHub prend en charge une fonctionnalité de renouvellement de certificat. Vous pouvez configurer le renouvellement de certificat de serveur du module edgeHub à l’aide des variables d’environnement suivantes :

  • ServerCertificateRenewAfterInMs : définit la durée en millisecondes après laquelle le certificat de serveur edgeHub est renouvelé, quelle que soit l’heure d’expiration du certificat.
  • MaxCheckCertExpiryInMs : définit la durée en millisecondes après laquelle le service edgeHub vérifie l’expiration du certificat de serveur edgeHub. Si la variable est définie, la vérification se produit quelle que soit l’heure d’expiration du certificat.

Pour plus d’informations sur les variables d’environnement, consultez Variables d’environnement EdgeHub et EdgeAgent.

Modifications apportées à 1.2 et ultérieures

  • Le certificat d’autorité de certification d’appareil a été renommé certificat d’autorité de certification Edge.
  • Le certificat d’autorité de certification de charge de travail a été déprécié. Désormais, le gestionnaire de sécurité IoT Edge génère le certificat du serveur IoT Edge HubedgeHub directement à partir du certificat de l’autorité de certification de périphérie, sans le certificat intermédiaire d’autorité de certification de charge de travail.
  • Le fichier de configuration par défaut a un nouveau nom et un nouvel emplacement, de /etc/iotedge/config.yaml à /etc/aziot/config.toml par défaut. La commande iotedge config import peut aider à migrer les informations de configuration de l’ancien emplacement et de l’ancienne syntaxe.

Étapes suivantes

L’installation de certificats sur un appareil IoT Edge est une étape nécessaire avant le déploiement de votre solution en production. Découvrez comment Préparer le déploiement en production d’une solution IoT Edge.