Authentifier des identités avec des certificats X.509
IoT Hub utilise des certificats X.509 pour authentifier les appareils. L’authentification basée sur le certificat X.509 permet l’authentification d’un appareil IoT dans le cadre de l’établissement d’une connexion TLS (Transport Layer Security) standard.
Un certificat d’autorité de certification (CA) X.509 est un certificat numérique qui peut signer d’autres certificats. Un certificat numérique est considéré comme étant X.509 s’il est conforme à la norme de mise en forme des certificats prescrite par la norme RFC 5280 de l’IETF.
La fonctionnalité d’autorité de certification X.509 permet l’authentification des appareils auprès d’IoT Hub à l’aide d’une autorité de certification. Celle-ci simplifie considérablement le processus d’inscription initial des appareils et la logistique de la chaîne d’approvisionnement lors de la fabrication de l’appareil.
Authentification et autorisation
L’authentification est le processus visant à prouver votre identité. L’authentification vérifie l’identité d’un utilisateur ou d’un appareil auprès d’IoT Hub. En anglais, elle est parfois abrégée en AuthN.
L’autorisation est le processus de confirmation des autorisations pour un utilisateur ou un appareil authentifié sur IoT Hub. Elle spécifie les ressources et les commandes auxquelles vous êtes autorisé à accéder, ainsi que ce que vous pouvez faire avec ces ressources et commandes. En anglais, elle est parfois abrégée en AuthZ.
Les certificats X.509 sont uniquement utilisés pour l’authentification dans IoT Hub, et non pour l’autorisation. Contrairement à Microsoft Entra ID et aux signatures d’accès partagé, vous ne pouvez pas personnaliser les autorisations avec des certificats X.509.
Types d’authentification par certificat
Vous pouvez utiliser n’importe quel certificat X.509 pour authentifier un appareil avec IoT Hub en chargeant une empreinte de certificat ou une autorité de certification (CA) sur IoT Hub.
Certificat X.509 signé par une autorité de certification (CA) - Cette option est recommandée pour les scénarios de production et fait l’objet de cet article.
Si votre appareil a un certificat X.509 signé par une autorité de certification, vous chargez un certificat CA racine ou intermédiaire dans la chaîne de signature vers IoT Hub avant d’inscrire l’appareil. L’appareil a un certificat X.509 avec le X.509 CA vérifié dans sa chaîne d’approbation de certificats. Lorsque l’appareil se connecte, il présente sa chaîne de certificats complète et le hub IoT peut le valider, car il connaît le X.509 CA. Plusieurs appareils peuvent s’authentifier avec le même X.509 vérifié.
Certificat X.509 autosigné
Si votre appareil dispose d’un certificat X.509 autosigné, vous donnez à IoT Hub une version du certificat pour l’authentification. Lorsque vous inscrivez un appareil, vous chargez une empreinte du certificat, qui est un hachage du certificat X.509 de l’appareil. Lorsque l’appareil se connecte, il présente son certificat et le hub IoT peut le valider par rapport au hachage qu’il connaît.
Important
Les fonctionnalités suivantes pour les appareils qui utilisent l’authentification par l’autorité de certification X.509 ne sont pas encore disponibles, et le mode aperçu doit être activé :
- protocoles HTTPS, MQTT sur WebSockets, et AMQP sur WebSockets.
- Chargements de fichiers (tous les protocoles).
Ces fonctionnalités sont généralement disponibles sur les appareils qui utilisent l’authentification par empreinte X.509.
Mettre en œuvre l’authentification X.509
Pour plus de sécurité, un hub IoT peut être configuré pour ne pas autoriser l’authentification SAS pour les appareils et les modules, en laissant X. 509 comme seule option d’authentification acceptée. Actuellement, cette fonctionnalité n’est pas disponible dans le portail Azure. Pour configurer, définissez disableDeviceSAS
et disableModuleSAS
sur true
dans les propriétés de la ressource IOT Hub :
az resource update -n <iothubName> -g <resourceGroupName> --resource-type Microsoft.Devices/IotHubs --set properties.disableDeviceSAS=true properties.disableModuleSAS=true
Avantages de l’authentification par certificat d’autorité de certification X.509
IoT nécessite une identité unique pour chaque appareil qui se connecte. Pour l’authentification basée sur les certificats, ces identités sont sous la forme de certificats.
Une façon valide mais inefficace de fournir un certificat unique sur chaque appareil consiste à pré-générer des certificats et à donner à tous les partenaires de chaîne d’approvisionnement les clés privées correspondantes. Cette méthode implique des défis qui doivent être relever pour assurer la confiance :
Devoir partager les clés privées des appareils avec les partenaires de la chaîne logistique rend la confiance dans la chaîne logistique coûteuse, outre le fait que cela ne respecte pas les meilleures pratiques de l’infrastructure de clé publique qui indiquent de ne jamais partager les clés privées. Cela nécessite que des systèmes comme des salles sécurisées hébergent les clés privées des appareils et des processus tels que des audits de sécurité périodiques. Ceux-ci ajoutent des coûts à la chaîne logistique.
La comptabilité sécurisée des appareils dans la chaîne d’approvisionnement et leur gestion ultérieure dans le déploiement jusqu’à leur mise hors service, deviennent une tâche individualisée pour chaque paire clé-appareil. Cette relation empêche la gestion de groupe des appareils, à moins que le concept de groupes ne soit explicitement intégré au processus, d’une manière ou d’une autre. Par conséquent, la comptabilité sécurisée et la gestion du cycle de vie des appareils se transforment en une charge d’exploitation lourde.
L’authentification par certificat d’autorité de certification X.509 propose des solutions à ces défis grâce à l’utilisation de chaînes de certificats. Une chaîne de certificats est créée lorsqu’une autorité de certification signe une autorité de certification intermédiaire, qui à son tour signe une autre autorité de certification intermédiaire, et ainsi de suite jusqu’à ce qu’une autorité de certification intermédiaire finale signe un appareil. Les chaînes de certificats créent une relation de type un à plusieurs entre un certificat de l'autorité de certification et ses dispositifs en aval. Cette relation vous laisse inscrire autant d’appareils que vous le voulez dans IoT Hub en inscrivant une seule fois un certificat d’autorité de certification X.509.
L'authentification d’autorité de certification X.509 simplifie également la logistique de la chaîne d'approvisionnement. Les flux classiques de fabrication d’appareils impliquent plusieurs étapes et opérateurs. Avec le recours aux autorités de certification, vous pouvez inscrire chaque opérateur dans une chaîne de confiance cryptographique au lieu de se voir remettre des clés privées d’appareils. Chaque opérateur signe les appareils lors de son étape respective du processus de fabrication. Résultat : une chaîne logistique optimale avec responsabilité intégrée grâce à l’utilisation d’une chaîne de confiance cryptographique.
Ce processus est le plus sécurisé lorsque les appareils protègent leurs clés privées uniques. À cette fin, nous conseillons l’utilisation de modules de sécurité matériels (HSM) capables de générer en interne des clés privées.
Le service Azure IoT Hub DPS (Device Provisioning Service) facilite le provisionnement de groupes d’appareils vers des hubs. Pour plus d’informations, consultez Tutoriel : Provisionner plusieurs appareils X.509 à l’aide de groupes d’inscriptions.
Flux de certificat X.509
Cette section décrit comment utiliser des certificats CA X.509 pour authentifier les appareils se connectant à IoT Hub, y compris les étapes suivantes :
- Obtenir un certificat d’autorité de certification X.509.
- Signer des appareils à l’aide de certificats d’autorité de certification X.509.
- Inscrire le certificat d’autorité de certification X.509 dans IoT Hub.
- Authentifier les appareils signés avec des autorités de certification X.509.
- Révoquer le certificat d'un appareil s'il est compromis.
Obtenir un certificat d’autorité de certification X.509
Le certificat de l’autorité de certification X.509 apparaît en haut de la chaîne des certificats pour chacun de vos appareils. Vous pouvez acheter un certificat ou en créer un, selon la façon dont vous souhaitez l’utiliser.
Pour les environnements de production, nous vous recommandons d’acheter un certificat d’autorité de certification X.509 auprès d’un fournisseur professionnel de services de certificats.
Vous pouvez également créer un certificat d’autorité de certification auto-signé X.509 à des fins de test. Pour plus d’informations sur la création de certificats à des fins de test, consultez l’article Créer et charger des certificats à des fins de test. Nous déconseillons les certificats auto-signés pour les environnements de production.
Quelle que soit la provenance de votre certificat d’autorité de certification X.509, veillez toujours à garder secrète et à protéger sa clé privée.
Acheter un certificat
En achetant un certificat d’autorité de certification, une autorité de certification racine connue agit comme un tiers de confiance pour garantir la légitimité de vos appareils IoT lors de leur connexion. Choisissez cette option si vos appareils font partie d’un réseau IoT ouvert où ils interagissent avec des produits ou services tiers.
Pour acheter un certificat d’autorité de certification X.509, choisissez un fournisseur de service de certificat racine. Le fournisseur d’autorité de certification racine vous aide à créer la paire de clés publique/privée et à générer une requête de signature de certificat (CSR) pour les services. Une demande de signature de certificat correspond au processus formel de demande de certificat auprès d’une autorité de certification. Le résultat de cet achat est un certificat à utiliser comme certificat d’autorité. Étant donné l’omniprésence des certificats X.509, le certificat aura certainement été correctement mis en forme conformément à la norme RFC 5280 de l’IETF.
Créer un certificat auto-signé
Le processus de création d’un certificat d’autorité de certification X.509 auto-signé est similaire au processus d’achat, hormis qu’un signataire tiers, comme l’autorité de certification racine, n’est pas impliqué.
Vous pouvez choisir cette option à des fins de test, jusqu’à ce que vous soyez prêt à acheter un certificat d’autorité. Vous pouvez également utiliser un certificat d’autorité de certification X.509 auto-signé en production si vos appareils ne se connectent à aucun service tiers en dehors d’IoT Hub.
Signature d’appareils dans la chaîne de certificats de confiance
Le propriétaire d’un certificat d’autorité de certification X.509 peut signer par chiffrement une autorité de certification intermédiaire qui peut à son tour signer une autre autorité de certification intermédiaire, et ainsi de suite, jusqu’à ce que la dernière autorité de certification intermédiaire signe un certificat d’appareil. Vous obtenez ainsi une chaîne de certificats en cascade appelée chaîne de certificats de confiance. Cette délégation de confiance est importante car elle établit une chaîne par chiffrement et évite le partage des clés de signature.
Cette cascade de certificats dans la chaîne représente le transfert logique de l’autorité. De nombreuses chaînes d'approvisionnement suivent ce transfert logique selon lequel chaque autorité de certification intermédiaire s'intègre dans la chaîne tout en recevant tous les certificats des autorités de certification en amont. La dernière autorité de certification intermédiaire signe finalement chaque appareil et injecte tous les certificats d'autorité de la chaîne dans l'appareil.
Le certificat d’appareil (également appelé certificat feuille) doit avoir son nom courant (CN) défini sur l’ID d’appareil (CN=deviceId
) utilisé lors de l’inscription de l’appareil IoT dans Azure IoT Hub. Ce paramètre est requis pour l’authentification.
Pour les modules qui utilisent l’authentification X.509, le certificat du module doit avoir son nom commun (CN) dans un format semblable à CN=deviceId/moduleId
.
Découvrez comment créer une chaîne de certificats comme lors de la signature des appareils.
Inscrire le certificat d’autorité de certification X.509 dans IoT Hub
Inscrivez votre certificat d’autorité de certification X.509 dans IoT Hub, qui l’utilise pour authentifier vos appareils. Un certificat d'autorité de certification X.509 peut authentifier tout appareil dont l'autorité de certification fait partie de sa chaîne de confiance. L’inscription du certificat d’autorité de certification X.509 est un processus en deux étapes, qui comprend le chargement du fichier de certificat et l’établissement d’une preuve de possession.
Le processus de chargement implique le chargement d’un fichier contenant votre certificat. Ce fichier ne doit jamais contenir toutes les clés privées.
La preuve de possession nécessite une vérification par chiffrement et un processus de réponse entre vous et IoT Hub pour vérifier que vous possédez réellement le certificat d’autorité de certification. Vous pouvez choisir de vérifier la propriété automatiquement ou manuellement. Pour la vérification manuelle, IoT Hub génère une demande aléatoire que vous signez avec la clé privée du certificat d’autorité de certification. Si vous avez gardé la clé privée secrète et protégée comme recommandé, vous êtes alors la seule personne à pouvoir effectuer cette étape. Dans cette méthode, la capacité à garder secrètes les clés privées est la base de la confiance. Après la signature de la demande, chargez un fichier contenant les résultats pour achever la vérification.
Découvrez comment inscrire votre certificat d’autorité de certification.
Authentifier les appareils signés avec des certificats d’autorité de certification X.509
Une fois votre certificat d’autorité de certification X.509 inscrit et les appareils connectés avec une chaîne de certificats de confiance, la dernière étape est l’authentification de l’appareil. Lorsqu’un appareil signé par une autorité de certification X.509 se connecte, il charge sa chaîne de certificats pour validation. Grâce à ces informations, IoT Hub authentifie l’appareil dans un processus en deux étapes.
Tout d'abord, IoT Hub valide cryptographiquement la chaîne de certificats pour en vérifier la cohérence interne. Ensuite, IoT Hub lance un défi de preuve de possession à l'appareil. IoT Hub authentifie l’appareil si celui-ci répond de façon correcte à la demande de preuve de possession. Cette déclaration suppose que la clé privée de l’appareil est protégée et que seul l’appareil peut répondre correctement à cette demande. Nous recommandons d’utiliser sur les appareils des puces sécurisées comme les modules de sécurité matériels (HSM) afin de protéger les clés privées.
La connexion réussie d’un appareil à IoT Hub termine le processus d’authentification et constitue un bon indicateur d’une configuration correcte. Chaque fois qu’un appareil se connecte, IoT Hub renégocie la session TLS et vérifie le certificat X.509 de l’appareil.
Révoquer un certificat d’appareil
IoT Hub ne vérifie pas les listes de révocation de certificats auprès de l’autorité de certification lors de l’authentification des appareils avec une authentification basée sur un certificat. Si vous avez un appareil dont vous avez besoin d’empêcher la connexion à IoT Hub en raison d’un certificat potentiellement compromis, désactivez l’appareil dans le registre des identités. Pour plus d’informations, consultez Désactiver ou supprimer un appareil.
Exemple de scénario
L’entreprise X crée des appareils Smart-X-Widget qui sont conçus pour une installation professionnelle. L’entreprise X sous-traite la fabrication et l’installation. L’usine Y fabrique les appareils Smart-X-Widget et le technicien Z les installe. L’entreprise X souhaite que les appareils Smart-X-Widget soient directement envoyés de l’usine Y au technicien Z pour l’installation, et qu’ils soient directement reliés à l’instance IoT Hub de l’entreprise X. Pour ce faire, l’entreprise X doit effectuer quelques opérations de configuration uniques pour préparer le widget Smart-X à la connexion automatique. Ce scénario de bout en bout inclut les étapes suivantes :
Obtenir le certificat de l’autorité de certification X.509
Inscrire le certificat d’autorité de certification X.509 dans IoT Hub
Signer les appareils dans une chaîne de certificats de confiance
Connecter les appareils
Ces étapes sont illustrées dans le Tutoriel : Créer et charger des certificats à des fins de test.
Récupération du certificat
L’entreprise X a la possibilité d’acheter un certificat d’autorité de certification X.509 auprès d’une autorité de certification racine publique ou d’en créer un via un processus auto-signé. Quelle que soit l’option choisie, le processus implique deux étapes fondamentales : la génération d’une paire de clés publique/privée et la signature de la clé publique dans un certificat.
La réalisation de ces étapes diffère en fonction des prestataires de services.
Inscrire le certificat dans IoT Hub
L’entreprise X doit inscrire l’autorité de certification X.509 dans IoT Hub, où elle sert à authentifier les widgets Smart-X lors de leur connexion. Ce processus unique permet d’authentifier et de gérer autant d’appareils Smart-X-Widget que vous le souhaitez. La relation un-à-plusieurs entre le certificat d’autorité de certification et les certificats d’appareil est l’un des principaux avantages de l’utilisation de la méthode d’authentification via l’autorité de certification X.509. L’autre solution consiste à charger les empreintes de chaque certificat pour chaque appareil Smart-X-Widget, ce qui augmente les coûts d’exploitation.
L’inscription du certificat d’autorité de certification X.509 est un processus en deux étapes, qui comprend le chargement du certificat et la fourniture d’une preuve de possession.
Téléchargement du certificat
Le processus de chargement du certificat d’autorité de certification X.509 consiste simplement à charger le certificat d’autorité de certification sur IoT Hub. IoT Hub attend le certificat sous forme de fichier.
Le fichier de certificat ne doit en aucun cas contenir des clés privées. Les bonnes pratiques des normes régissant l’infrastructure à clé publique imposent que les clés privées de l’entreprise X soient exclusivement connues au sein de l’entreprise X.
Fournir une preuve de possession
Le certificat de l’autorité de certification X.509, tout comme n’importe quel certificat numérique, constitue des informations publiques qui sont susceptibles d’être volées. Par conséquent, une personne malveillante pourrait intercepter un certificat et essayer de le charger comme s’il s’agissait du sien. Dans notre exemple, IoT Hub doit s’assurer que le certificat d’autorité de certification chargé par l’entreprise X appartient réellement à l’entreprise X. Pour ce faire, IoT Hub demande à l’entreprise X de prouver qu’elle possède le certificat via un flux de preuve de possession.
Pour le flux de preuve de possession, IoT Hub génère un nombre aléatoire que l’entreprise X doit signer à l’aide de sa clé privée. Si l’entreprise X a suivi les bonnes pratiques de l’infrastructure à clé publique et a protégé sa clé privée, alors elle est la seule à pouvoir répondre correctement au défi de la preuve de possession. IoT Hub poursuit l’inscription du certificat de l’autorité de certification X.509 en cas de réponse correcte au défi de la preuve de possession.
En cas de réponse correcte d’IoT Hub au défi de la preuve de possession, l’inscription de l’autorité de certification X.509 est terminée.
Signer les appareils dans une chaîne de certificats de confiance
Dans notre exemple, l’authentification basée sur les certificats signifie que chaque appareil Smart-X-Widget doit posséder un certificat d’appareil unique. Plutôt que de créer des paires certificat/clé individuelles pour chaque appareil, l’entreprise X décide d'utiliser des certificats d'autorité de certification et de créer une chaîne de confiance pour chaque appareil.
Dans notre exemple, l’entreprise X signe l’usine Y, qui à son tour signe le technicien Z, qui signe le widget Smart-X.
Le diagramme suivant montre comment la chaîne de certificats de confiance s’assemble dans notre exemple Smart-X-Widget.
- L’entreprise X n’interagit jamais physiquement avec aucun des appareils Smart-X-Widget. Elle lance la chaîne de certificats de confiance en signant le certificat d’autorité de certification intermédiaire de l’usine Y.
- L’usine Y possède désormais son propre certificat d’autorité de certification intermédiaire avec une signature de l’entreprise X. Il transmet des copies de ces éléments à chaque appareil. Elle utilise également son certificat d’autorité de certification intermédiaire pour signer le certificat d’autorité de certification intermédiaire du technicien Z et les certificats d’appareil Smart-X-Widget.
- Le technicien Z possède désormais son propre certificat d’autorité de certification intermédiaire avec une signature de l’usine Y. Il transmet des copies de ces éléments à chaque appareil. Il utilise également son certificat d’autorité de certification intermédiaire pour signer les certificats d’appareil Smart-X-Widget.
- Chaque appareil Smart-X-Widget possède désormais son propre certificat d’appareil unique et les copies des clés publiques et des signatures de chaque certificat d’autorité de certification intermédiaire avec lequel il a interagi dans toute la chaîne d’approvisionnement. Ces certificats et signatures peuvent être retracés jusqu’à la racine d’origine de l’entreprise X.
La méthode d’authentification par l’autorité de certification ajoute la comptabilité sécurisée à la chaîne d’approvisionnement de fabrication de l’appareil. Du fait du processus de la chaîne de certificats, les actions de chaque membre de la chaîne sont enregistrées sous forme chiffrée et peuvent être vérifiées.
Ce processus s’appuie sur l’hypothèse selon laquelle la paire de clés publique/privée d’appareil unique est créée indépendamment et que la clé privée est toujours protégée au sein de l’appareil. Heureusement, il existe des puces en silicium sécurisées sous forme de modules de sécurité matériels capables de générer des clés en interne et de protéger les clés privées. L’entreprise X doit simplement ajouter une de ces puces à la nomenclature des composants de Smart-X-Widget.
Authentifier des appareils
Les appareils fabriqués pour l’authentification par l’autorité de certification X.509 sont équipés de certificats d’appareil uniques et d’une chaîne de certificats provenant de leur chaîne d’approvisionnement de fabrication respective. La connexion de l’appareil, même la première fois, suit un processus en deux étapes : chargement de la chaîne de certificats et preuve de possession.
Dans notre exemple, chaque widget Smart-X charge son certificat d’appareil unique avec les certificats d’autorité de certification X.509 de l’usine Y et du technicien Z, et répond ensuite au défi de preuve de possession IoT Hub.
À l’aide du certificat d’autorité de certification X.509 préalablement inscrit auprès de l’entreprise X, IoT Hub valide que la chaîne de certificats chargée est cohérente en interne et que le propriétaire valide du certificat d’autorité de certification X.509 est à l’origine de la chaîne. Comme avec le processus d’inscription d’autorité de certification X.509, IoT Hub utilise un processus de demande/réponse concernant la preuve de possession afin de s’assurer que la chaîne (et donc le certificat de l’appareil) appartient bien à l’appareil qui la charge. Si la réponse est correcte, IoT Hub accepte l’appareil comme authentique et l’autorise à se connecter.
La base de la confiance réside dans la protection des clés privées, y compris les clés privées des appareils. Nous ne pourrons jamais insister suffisamment sur l’importance des puces en silicium sécurisées sous la forme de modules de sécurité matériels (HSM) afin de protéger les clés privées des appareils et la bonne pratique globale consistant à ne jamais partager les clés privées à partir d’un certificat de la chaîne.
Étapes suivantes
Utilisez le service Device Provisioning pour provisionner plusieurs appareils X.509 à l’aide de groupes d’inscriptions.
Pour en savoir plus sur les champs qui constituent un certificat X.509, consultez Certificat X.509.
Si vous avez un certificat d’autorité de certification racine ou un certificat d’autorité de certification subordonnée, et que vous voulez le charger sur votre hub IoT, vous devez vérifier que vous êtes propriétaire de ce certificat. Pour plus d’informations, consultez le Tutoriel : Créer et charger des certificats à des fins de test.