X.509-certificaatattestatie
In dit artikel worden de concepten beschreven die betrokken zijn bij het inrichten van apparaten met behulp van X.509-certificaatverklaring in Device Provisioning Service (DPS). Dit artikel is relevant voor alle persona's die betrokken zijn bij het voorbereiden van een apparaat voor implementatie.
X.509-certificaten kunnen worden opgeslagen in een HSM voor hardwarebeveiligingsmodule.
Tip
We raden u ten zeerste aan om een HSM met apparaten te gebruiken om geheimen, zoals het X.509-certificaat, veilig op te slaan op uw apparaten in productie.
Inzicht in de X.509-certificaatketen
Het gebruik van X.509-certificaten als attestation-mechanisme is een uitstekende manier om productie te schalen en het inrichten van apparaten te vereenvoudigen. X.509-certificaten worden doorgaans gerangschikt in een certificaatketen van vertrouwen waarin elk certificaat in de keten wordt ondertekend door de persoonlijke sleutel van het volgende hogere certificaat, enzovoort, waardoor een zelfondertekend basiscertificaat wordt beëindigd. Met deze regeling wordt een gedelegeerde vertrouwensketen tot stand gebracht van het basiscertificaat dat is gegenereerd door een vertrouwde certificeringsinstantie (CA) tot en met elk tussenliggend certificaat naar het uiteindelijke certificaat dat op een apparaat is geïnstalleerd. Zie Apparaatverificatie met X.509 CA-certificaten voor meer informatie.
Vaak vertegenwoordigt de certificaatketen een logische of fysieke hiërarchie die is gekoppeld aan apparaten. Een fabrikant kan bijvoorbeeld de volgende certificaathiërarchie maken:
- Een zelfondertekend basis-CA-certificaat begint met de certificaatketen.
- Het basiscertificaat genereert een uniek tussenliggend CA-certificaat voor elke fabriek.
- Het certificaat van elke fabriek genereert een uniek tussenliggend CA-certificaat voor elke productielijn in de fabriek.
- Het productielijncertificaat genereert een uniek apparaatcertificaat (eindentiteitscertificaat) voor elk apparaat dat op de regel is vervaardigd.
Zie Conceptueel begrip van X.509 CA-certificaten in de IoT-branche voor meer informatie.
Basiscertificaat
Een basiscertificaat is een zelfondertekend X.509-certificaat dat een certificeringsinstantie (CA) vertegenwoordigt. Het is het eindpunt of het vertrouwensanker van de certificaatketen. Basiscertificaten kunnen zelf worden uitgegeven door een organisatie of worden aangeschaft bij een basiscertificeringsinstantie. Het basiscertificaat kan ook een basis-CA-certificaat worden genoemd.
Tussenliggend certificaat
Een tussenliggend certificaat is een X.509-certificaat dat is ondertekend door het basiscertificaat (of door een ander tussencertificaat met het basiscertificaat in de keten) en kan ook nieuwe certificaten ondertekenen. Het laatste tussenliggende certificaat in een keten ondertekent het bladcertificaat. Een tussenliggend certificaat kan ook een tussenliggend CA-certificaat worden genoemd.
Tussenliggende certificaten worden op verschillende manieren gebruikt. Tussenliggende certificaten kunnen bijvoorbeeld worden gebruikt om apparaten te groeperen op productlijnen, klanten die apparaten kopen, bedrijfsafdelingen of factory's.
Stel dat Contoso een grote onderneming is met een eigen PKI (Public Key Infrastructure) met behulp van het basiscertificaat met de naam ContosoRootCert
. Elke dochteronderneming van Contoso heeft een eigen tussenliggend certificaat dat is ondertekend door ContosoRootCert
. Elke dochteronderneming gebruikt hun tussenliggende certificaat om hun bladcertificaten voor elk apparaat te ondertekenen. In dit scenario kan Contoso één DPS-exemplaar gebruiken, waarbij ContosoRootCert
een geverifieerd certificaat is. Ze kunnen een inschrijvingsgroep hebben voor elke dochteronderneming. Op deze manier hoeft elke afzonderlijke dochteronderneming zich geen zorgen te maken over het verifiëren van certificaten.
End-entity 'leaf'-certificaat
Een bladcertificaat, of een certificaat voor eindentiteit, identificeert een certificaathouder. Het heeft het basiscertificaat in de certificaatketen en nul of meer tussenliggende certificaten. Een bladcertificaat wordt niet gebruikt om andere certificaten te ondertekenen. Het identificeert een apparaat uniek voor de inrichtingsservice en wordt ook wel een apparaatcertificaat genoemd. Tijdens verificatie gebruikt een apparaat de persoonlijke sleutel die is gekoppeld aan het certificaat om te reageren op een bewijs van bezit van de service.
X.509-certificaten gebruiken met DPS
De inrichtingsservice bevat twee inschrijvingstypen die u kunt gebruiken om apparaattoegang te beheren met het X.509 Attestation-mechanisme:
- Afzonderlijke inschrijvingsvermeldingen worden geconfigureerd met het apparaatcertificaat dat is gekoppeld aan een specifiek apparaat. Deze vermeldingen bepalen inschrijvingen voor specifieke apparaten.
- Vermeldingen voor inschrijvingsgroepen zijn gekoppeld aan een specifiek tussenliggend of basis-CA-certificaat. Deze vermeldingen beheren inschrijvingen voor alle apparaten met dat tussenliggende of basiscertificaat in hun certificaatketen.
Een certificaat kan worden opgegeven in slechts één inschrijvingsvermelding in uw DPS-exemplaar.
Wederzijdse TLS-ondersteuning
Wanneer DPS-inschrijvingen zijn geconfigureerd voor X.509-attestation, wordt wederzijdse TLS (mTLS) ondersteund door DPS.
Vereisten voor DPS-versleutelingsalgoritmen
Device Provisioning Service accepteert alleen X.509-certificaten die gebruikmaken van het RSA-algoritme (Rivest-Shamir-Adleman) of het ECC-algoritme (Elliptic Curve Cryptography) voor versleuteling. ECC en RSA bieden gelijkwaardige niveaus van versleutelingssterkte, maar ECC gebruikt een kortere sleutellengte.
Als u ECC-methoden gebruikt om X.509-certificaten te genereren voor apparaatattestatie, raden we de volgende elliptische curven aan:
- nistP256
- nistP384
- nistP521
Naamgevingsvereisten voor DPS-certificaten
Bladcertificaten die worden gebruikt met afzonderlijke inschrijvingsvermeldingen , moeten de algemene naam van het onderwerp (CN) hebben ingesteld op de registratie-id. De registratie-id identificeert de apparaatregistratie met DPS en moet uniek zijn voor het DPS-exemplaar (ID-bereik) waar het apparaat zich registreert.
Voor inschrijvingsgroepen stelt de algemene naam van het onderwerp (CN) de apparaat-id in die is geregistreerd bij IoT Hub. De apparaat-id wordt weergegeven in de registratierecords voor het geverifieerde apparaat in de registratiegroep. Voor afzonderlijke inschrijvingen kan de apparaat-id worden ingesteld in de inschrijvingsvermelding. Als deze niet is ingesteld in de inschrijvingsvermelding, wordt de algemene naam van het onderwerp (CN) gebruikt.
Zie Apparaten verifiëren die zijn ondertekend met X.509 CA-certificaten voor meer informatie.
Vereisten voor DPS-apparaatketen
Wanneer een apparaat probeert te registreren via DPS met behulp van een inschrijvingsgroep, moet het apparaat de certificaatketen van het bladcertificaat naar een geverifieerd certificaat verzenden. Anders mislukt de verificatie.
Als bijvoorbeeld alleen het basiscertificaat wordt geverifieerd en er een tussencertificaat naar de inschrijvingsgroep wordt geüpload, moet het apparaat de certificaatketen van het certificaat helemaal naar het geverifieerde basiscertificaat presenteren. Deze certificaatketen bevat tussenliggende certificaten. Verificatie mislukt als DPS de certificaatketen niet kan doorkruisen naar een geverifieerd certificaat.
Denk bijvoorbeeld aan een bedrijf dat gebruikmaakt van de volgende apparaatketen voor een apparaat.
In dit voorbeeld wordt het basiscertificaat geverifieerd met DPS en intermediate2
wordt het certificaat geüpload in de inschrijvingsgroep.
Als het apparaat alleen de volgende apparaatketen verzendt tijdens het inrichten, mislukt de verificatie. Omdat DPS geen verificatie kan proberen, uitgaande van de geldigheid van intermediate1
het certificaat.
Als het apparaat de volledige apparaatketen als volgt verzendt tijdens het inrichten, kan DPS de verificatie van het apparaat proberen.
DPS-volgorde van bewerkingen met certificaten
Wanneer een apparaat verbinding maakt met de inrichtingsservice, begeleidt de service de certificaatketen vanaf het apparaatcertificaat (leaf) en zoekt deze naar een bijbehorende inschrijvingsvermelding. Hierbij wordt de eerste vermelding gebruikt die in de keten wordt gevonden om te bepalen of het apparaat moet worden ingericht. Als er een afzonderlijke inschrijving voor het apparaatcertificaat bestaat, wordt die vermelding door de inrichtingsservice toegepast. Als er geen afzonderlijke inschrijving voor het apparaat is, zoekt de service naar een inschrijvingsgroep die overeenkomt met het eerste tussenliggende certificaat. Als er een wordt gevonden, wordt die vermelding toegepast; anders wordt gezocht naar een inschrijvingsgroep voor het volgende tussenliggende certificaat, enzovoort, omlaag in de keten naar de hoofdmap.
De service past de eerste vermelding toe die wordt gevonden, zodat:
- Als de eerste gevonden inschrijvingsvermelding is ingeschakeld, richt de service het apparaat in.
- Als de eerste gevonden inschrijvingsvermelding is uitgeschakeld, wordt het apparaat niet ingericht door de service.
- Als er geen inschrijvingsvermelding wordt gevonden voor een van de certificaten in de certificaatketen van het apparaat, wordt het apparaat niet ingericht door de service.
Elk certificaat in de certificaatketen van een apparaat kan worden opgegeven in een inschrijvingsvermelding, maar kan worden opgegeven in slechts één vermelding in het DPS-exemplaar.
Dit mechanisme en de hiërarchische structuur van certificaatketens bieden krachtige flexibiliteit bij het beheren van de toegang voor afzonderlijke apparaten en groepen apparaten. Stel bijvoorbeeld vijf apparaten voor met de volgende certificaatketens:
- Apparaat 1: basiscertificaat -> certificaat A -> apparaat 1-certificaat
- Apparaat 2: basiscertificaat -> certificaat A -> apparaat 2-certificaat
- Apparaat 3: basiscertificaat -> certificaat A -> apparaat 3-certificaat
- Apparaat 4: basiscertificaat -> certificaat B -> apparaat 4-certificaat
- Apparaat 5: basiscertificaat -> certificaat B -> apparaat 5-certificaat
In eerste instantie kunt u één groepsinschrijvingsvermelding voor het basiscertificaat maken om toegang voor alle vijf apparaten mogelijk te maken. Als certificaat B later wordt aangetast, kunt u een uitgeschakelde inschrijvingsgroepvermelding voor certificaat B maken om te voorkomen dat Apparaat 4 en Apparaat 5 worden ingeschreven. Als apparaat 3 later nog steeds wordt aangetast, kunt u een uitgeschakelde afzonderlijke inschrijvingsvermelding voor het certificaat maken. Hierdoor wordt de toegang voor apparaat 3 ingetrokken, maar kan Apparaat 1 en Apparaat 2 nog steeds worden ingeschreven.