X.509-certifikatattestering

Den här artikeln innehåller en översikt över de DPS-begrepp (Device Provisioning Service) som ingår vid etablering av enheter med X.509-certifikatattestering. Den här artikeln är relevant för alla personer som är involverade i att förbereda en enhet för distribution.

X.509-certifikat kan lagras i en maskinvarusäkerhetsmodul HSM.

Tips

Vi rekommenderar starkt att du använder en HSM med enheter för att lagra hemligheter på ett säkert sätt, till exempel X.509-certifikatet, på dina enheter i produktion.

X.509-certifikat

Att använda X.509-certifikat som en attesteringsmekanism är ett utmärkt sätt att skala produktionen och förenkla enhetsetablering. X.509-certifikat ordnas vanligtvis i en förtroendekedja där varje certifikat i kedjan signeras av den privata nyckeln för nästa högre certifikat och så vidare, och avslutas i ett självsignerat rotcertifikat. Det här arrangemanget upprättar en delegerad förtroendekedja från rotcertifikatet som genereras av en betrodd rotcertifikatutfärdare (CA) via varje mellanliggande certifikatutfärdare till slutentitetens "lövcertifikat" som är installerat på en enhet. Mer information finns i Enhetsautentisering med X.509 CA-certifikat.

Certifikatkedjan representerar ofta en logisk eller fysisk hierarki som är associerad med enheter. En tillverkare kan till exempel:

  • utfärda ett självsignerat rotcertifikatutfärdarcertifikat
  • använd rotcertifikatet för att generera ett unikt mellanliggande CA-certifikat för varje fabrik
  • använd varje fabriks certifikat för att generera ett unikt mellanliggande CA-certifikat för varje produktionslinje i anläggningen
  • och slutligen använda produktionsradcertifikatet för att generera ett unikt enhetscertifikat (slutentitet) för varje enhet som tillverkas på raden.

Mer information finns i Konceptuell förståelse av X.509 CA-certifikat i IoT-branschen.

Rotcertifikat

Ett rotcertifikat är ett självsignerat X.509-certifikat som representerar en certifikatutfärdare (CA). Det är certifikatkedjans slutpunkt eller förtroendeankare. Rotcertifikat kan utfärdas själv av en organisation eller köpas från en rotcertifikatutfärdare. Mer information finns i Hämta X.509 CA-certifikat. Rotcertifikatet kan också kallas ett rotcertifikatutfärdarcertifikat.

Mellanliggande certifikat

Ett mellanliggande certifikat är ett X.509-certifikat som har signerats av rotcertifikatet (eller av ett annat mellanliggande certifikat med rotcertifikatet i kedjan). Det sista mellanliggande certifikatet i en kedja används för att signera lövcertifikatet. Ett mellanliggande certifikat kan också kallas ett mellanliggande CA-certifikat.

Varför är mellanliggande certifikat användbara?

Mellanliggande certifikat används på flera olika sätt. Mellanliggande certifikat kan till exempel användas för att gruppera enheter efter produktlinjer, kunder som köper enheter, företagsdivisioner eller fabriker.

Anta att Contoso är ett stort företag med en egen PKI (Public Key Infrastructure) med rotcertifikatet ContosoRootCert. Varje dotterbolag till Contoso har ett eget mellanliggande certifikat som signeras av ContosoRootCert. Varje dotterbolag använder sedan sitt mellanliggande certifikat för att signera sina lövcertifikat för varje enhet. I det här scenariot kan Contoso använda en enda DPS-instans där ContosoRootCert har verifierats med bevis på innehav. De kan ha en registreringsgrupp för varje dotterbolag. På så sätt behöver varje enskilt dotterbolag inte bekymra sig om att verifiera certifikat.

Slutentitetscertifikat för "löv"

Lövcertifikatet, eller slutentitetscertifikatet, identifierar certifikatinnehavaren. Det har rotcertifikatet i sin certifikatkedja samt noll eller fler mellanliggande certifikat. Lövcertifikatet används inte för att signera andra certifikat. Den identifierar enheten unikt för etableringstjänsten och kallas ibland för enhetscertifikatet. Under autentiseringen använder enheten den privata nyckeln som är associerad med det här certifikatet för att svara på ett bevis på innehavsutmaning från tjänsten.

Lövcertifikat som används med poster för enskilda registreringar eller registreringsgrupper måste ha ämnesnamnet (CN) inställt på registrerings-ID: t. Registrerings-ID:t identifierar enhetsregistreringen med DPS och måste vara unikt för DPS-instansen (ID-omfånget) där enheten registreras. Registrerings-ID:t är en skiftlägesokänslig sträng med alfanumeriska tecken plus specialtecken: '-', '.', '_', . ':' Det sista tecknet måste vara alfanumeriskt eller streck ('-'). DPS stöder registrerings-ID:t på upp till 128 tecken. Den maximala längden för det gemensamma namnet på ämnet i ett X.509-certifikat är dock 64 tecken. Registrerings-ID:t är därför begränsat till 64 tecken när du använder X.509-certifikat.

För registreringsgrupper anger ämnesnamnet (CN) också det enhets-ID som är registrerat med IoT Hub. Enhets-ID:t visas i registreringsposterna för den autentiserade enheten i registreringsgruppen. För enskilda registreringar kan enhets-ID:t anges i registreringsposten. Om den inte anges i registreringsposten används ämnesnamnet (CN).

Mer information finns i Autentisera enheter som är signerade med X.509 CA-certifikat.

Styra enhetsåtkomst till etableringstjänsten med X.509-certifikat

Etableringstjänsten exponerar två registreringstyper som du kan använda för att styra enhetsåtkomst med X.509-attesteringsmekanismen:

  • Enskilda registreringsposter konfigureras med enhetscertifikatet som är associerat med en specifik enhet. Dessa poster styr registreringar för specifika enheter.
  • Registreringsgruppposter är associerade med ett specifikt mellanliggande certifikat eller rotcertifikatutfärdarcertifikat. Dessa poster styr registreringar för alla enheter som har det mellanliggande certifikatet eller rotcertifikatet i certifikatkedjan.

Ett certifikat kan bara anges i en registreringspost i DPS-instansen.

Ömsesidigt TLS-stöd

När DPS-registreringar konfigureras för X.509-attestering stöds ömsesidig TLS (mTLS) av DPS.

Krav för DPS-enhetskedjan

När en enhet försöker registrera sig via DPS med hjälp av en registreringsgrupp måste enheten skicka certifikatkedjan från lövcertifikatet till ett certifikat som verifierats med innehavsbevis. Annars misslyckas autentiseringen.

Om till exempel bara rotcertifikatet verifieras och ett mellanliggande certifikat laddas upp till registreringsgruppen, bör enheten visa certifikatkedjan från lövcertifikatet hela vägen till det verifierade rotcertifikatet. Den här certifikatkedjan skulle innehålla mellanliggande certifikat däremellan. Autentiseringen misslyckas om DPS inte kan bläddra i certifikatkedjan till ett verifierat certifikat.

Anta till exempel att ett företag använder följande enhetskedja för en enhet.

Exempel på kedja för enhetscertifikat

Endast rotcertifikatet verifieras och intermediate2-certifikatet laddas upp i registreringsgruppen.

Exempel på rotverifierad

Om enheten bara skickar följande enhetskedja under etableringen misslyckas autentiseringen. Eftersom DPS inte kan försöka autentisering förutsatt att intermediate1-certifikatet är giltigt

Exempel på misslyckad certifikatkedja

Om enheten skickar hela enhetskedjan enligt följande under etableringen kan DPS försöka autentisering av enheten.

Exempel på kedja för enhetscertifikat

Anteckning

Mellanliggande certifikat kan också verifieras med bevis på innehav..

DPS-åtgärdsordning med certifikat

När en enhet ansluter till etableringstjänsten vägleder tjänsten sin certifikatkedja med början med enhetscertifikatet (lövcertifikatet) och söker efter en motsvarande registreringspost. Den använder den första posten som hittas i kedjan för att avgöra om enheten ska etableras. Om det finns en enskild registrering för enhetscertifikatet (lövcertifikatet) tillämpar etableringstjänsten den posten. Om det inte finns någon enskild registrering för enheten letar tjänsten efter en registreringsgrupp som motsvarar det första mellanliggande certifikatet. Om den hittar en sådan, tillämpas den posten. Annars letar den efter en registreringsgrupp för nästa mellanliggande certifikat och så vidare nedåt i kedjan till roten.

Tjänsten tillämpar den första posten som den hittar, så att:

  • Om den första registreringsposten som hittas är aktiverad etablerar tjänsten enheten.
  • Om den första registreringsposten som hittas är inaktiverad etablerar inte tjänsten enheten.
  • Om ingen registreringspost hittas för något av certifikaten i enhetens certifikatkedja etablerar tjänsten inte enheten.

Observera att varje certifikat i en enhets certifikatkedja kan anges i en registreringspost, men det kan bara anges i en post i DPS-instansen.

Den här mekanismen och den hierarkiska strukturen för certifikatkedjor ger kraftfull flexibilitet i hur du kan styra åtkomsten för enskilda enheter och för grupper av enheter. Tänk dig till exempel fem enheter med följande certifikatkedjor:

  • Enhet 1: rotcertifikat –> certifikat A –> enhets 1-certifikat
  • Enhet 2: rotcertifikat –> certifikat A –> enhets 2-certifikat
  • Enhet 3: rotcertifikat –> certifikat A –> enhets 3-certifikat
  • Enhet 4: rotcertifikat –> certifikat B –> enhets 4-certifikat
  • Enhet 5: rotcertifikat –> certifikat B –> enhets 5-certifikat

Inledningsvis kan du skapa en enda aktiverad gruppregistreringspost för rotcertifikatet för att aktivera åtkomst för alla fem enheterna. Om certifikat B senare komprometteras kan du skapa en inaktiverad registreringsgrupppost för certifikat B för att förhindra att enhet 4 och enhet 5 registreras. Om enhet 3 fortfarande senare komprometteras kan du skapa en inaktiverad enskild registreringspost för certifikatet. Detta återkallar åtkomsten för enhet 3, men tillåter fortfarande att enhet 1 och enhet 2 registreras.