X.509-Zertifikatnachweis
In diesem Artikel werden die Konzepte bei der Bereitstellung von Geräten mit dem X.509-Zertifikatnachweis in DPS (Device Provisioning Service) beschrieben. Dieser Artikel ist für alle Personen relevant, die an der Vorbereitung von Geräten für die Bereitstellung beteiligt sind.
X.509-Zertifikate können in einem Hardwaresicherheitsmodul (HSM) gespeichert werden.
Tipp
Es wird dringend empfohlen, ein HSM bei Geräten zu verwenden, um Geheimnisse wie das X.509-Zertifikat auf Ihren Geräten in der Produktionsumgebung sicher zu speichern.
Grundlegendes zur X.509-Zertifikatkette
Die Verwendung von X.509-Zertifikaten als Nachweismechanismus ist eine exzellente Möglichkeit, die Produktion zu skalieren und die Gerätebereitstellung zu vereinfachen. X.509-Zertifikate sind üblicherweise in einer Zertifikatvertrauenskette angeordnet, in der jedes Zertifikat in der Kette durch den privaten Schlüssel des nächsthöheren Zertifikats signiert ist. Den Abschluss der Kette bildet ein selbstsigniertes Stammzertifikat. Durch diese Anordnung entsteht eine delegierte Vertrauenskette vom Stammzertifikat, das durch eine vertrauenswürdige Stammzertifizierungsstelle generiert wird, über jede Zwischenzertifizierungsstelle bis zum Blattzertifikat, das auf einem Gerät installiert ist. Weitere Informationen finden Sie unter Geräteauthentifizierung mit X.509-Zertifikaten.
Häufig repräsentiert die Zertifikatkette eine logische oder physische Hierarchie im Zusammenhang mit den Geräten. Beispielsweise kann ein Hersteller die folgende Zertifikathierarchie erstellen:
- Ein selbstsigniertes Stammzertifizierungsstellenzertifikat steht am Anfang der Zertifikatkette.
- Mit dem Stammzertifikat wird ein eindeutiges Zertifizierungsstellen-Zwischenzertifikat für jedes Werk generiert.
- Mit dem Zertifikat für jedes Werk wird ein eindeutiges Zertifizierungsstellen-Zwischenzertifikat jeder Fertigungsstrecke im Werk generiert.
- Mit dem Zertifikat der Fertigungsstrecke wird ein eindeutiges Gerätezertifikat (Endentitätszertifikat) für jedes in dieser Strecke gefertigte Gerät generiert.
Weitere Informationen finden Sie unter Konzeptgrundlagen der X.509-Zertifizierungsstellenzertifikate in der IoT-Branche.
Stammzertifikat
Ein Stammzertifikat ist ein selbstsigniertes X.509-Zertifikat, das eine Zertifizierungsstelle (ZS) repräsentiert. Es handelt sich um den Endpunkt bzw. Vertrauensanker der Zertifikatkette. Stammzertifikate können von einer Organisation selbst ausgestellt oder bei einer Stammzertifizierungsstelle erworben werden. Das Stammzertifikat wird auch als Stammzertifizierungsstellenzertifikat bezeichnet.
Zwischenzertifikat
Ein Zwischenzertifikat ist ein X.509-Zertifikat, das vom Stammzertifikat (oder einem anderen Zwischenzertifikat mit dem Stammzertifikat in seiner Kette) signiert wurde und selbst zum Signieren neuer Zertifikate verwendet werden kann. Das letzte Zwischenzertifikat in einer Kette wird zum Signieren des Blattzertifikats (untergeordnetes Zertifikat) verwendet. Ein Zwischenzertifikat wird auch als Zertifizierungsstellen-Zwischenzertifikat bezeichnet.
Zwischenzertifikate werden auf verschiedene Weise verwendet. Beispielsweise können Zwischenzertifikate genutzt werden, um Geräte nach Produktlinien, Käufen durch Kunden, Unternehmensabteilungen oder Werken zu gruppieren.
Angenommen, Contoso ist ein großer Konzern mit eigener Public Key-Infrastruktur (PKI), für die ein Stammzertifikat mit dem Namen ContosoRootCert
verwendet wird. Jedes Tochterunternehmen von Contoso verfügt über ein eigenes Zwischenzertifikat, das mit ContosoRootCert
signiert wurde. Von jedem Tochterunternehmen wird das eigene Zwischenzertifikat dann verwendet, um seine Blattzertifikate für die einzelnen Geräte zu signieren. In diesem Szenario kann Contoso eine einzelne DPS-Instanz verwenden, bei der ContosoRootCert
ein überprüftes Zertifikat ist. Es kann eine Registrierungsgruppe für jedes Tochterunternehmen verwendet werden. Die einzelnen Niederlassungen müssen sich dann nicht um die Verifizierung von Zertifikaten kümmern.
Zertifikat für die endgültige Entität
Das Blattzertifikat bzw. Zertifikat für die Endentität (untergeordnetes Zertifikat) identifiziert den Zertifikatinhaber. Es weist das Stammzertifikat in seiner Zertifikatkette und 0 (null) oder mehr Zwischenzertifikate auf. Mit einem Blattzertifikat werden kein anderen Zertifikate signiert. Es identifiziert ein Gerät eindeutig beim Bereitstellungsdienst und wird auch als Gerätezertifikat bezeichnet. Während der Authentifizierung verwendet das Gerät den mit diesem Zertifikat verknüpften privaten Schlüssel, um auf eine Besitznachweisanforderung des Diensts zu antworten.
Vorbereiten von Zertifikaten
Geräte verwenden zwei verschiedene Arten von Zertifikaten, wenn sie eine Verbindung mit dem IoT Hub über DPS herstellen. Stellen Sie beim Vorbereiten des Geräts sicher, dass alle richtigen Zertifikate erstellt und dem Gerät hinzugefügt wurden, bevor Sie eine Verbindung herstellen.
- Öffentliche Stammzertifikate: Alle Geräte benötigen eine Kopie der öffentlichen Stammzertifikate, die IoT Hub, IoT Central und der Gerätebereitstellungsdienst zum Autorisieren von Verbindungen verwenden.
- Authentifizierungszertifikate: X.509-Zertifikate sind die empfohlene Methode, um eine Geräteidentität zu authentifizieren.
Erforderliche öffentliche Stammzertifikate
Azure IoT-Geräte verwenden TLS, um die Authentizität des IoT-Hubs oder DPS-Endpunkts zu überprüfen, mit dem sie eine Verbindung herstellen. Jedes Gerät benötigt eine Kopie des Stammzertifikats, das IoT Hub und DPS verwenden. Es wird empfohlen, dass alle Geräte die folgenden Stamm-ZS im vertrauenswürdigen Zertifikatspeicher einschließen:
- DigiCert Global G2
- Microsoft RSA 2017
Weitere Informationen zu den empfohlenen Zertifikatpraktiken finden Sie unter TLS-Unterstützung.
Authentifizierung mittels X.509-Zertifikaten
Vom Bereitstellungsdienst werden zwei Registrierungstypen verfügbar gemacht, die Sie verwenden können, um den Gerätezugriff mit dem X.509-Nachweismechanismus zu steuern:
- Individuelle Registrierung: Diese Einträge werden mit dem Gerätezertifikat konfiguriert, das einem bestimmten Gerät zugeordnet ist. Diese Einträge steuern Registrierungen für bestimmte Geräte.
- Registrierungsgruppe: Diese Einträge sind einem bestimmten Zertifizierungsstellen-Zwischenzertifikat oder -Stammzertifikat zugeordnet. Diese Einträge steuern die Registrierungen für alle Geräte, die in ihrer Zertifikatkette über ein Zertifizierungsstellen-Zwischenzertifikat oder -Stammzertifikat verfügen.
Ein Zertifikat kann nur in einem Registrierungseintrag in Ihrer DPS-Instanz angegeben werden.
Gegenseitige TLS-Unterstützung
Wenn DPS-Registrierungen für die X.509-Authentifizierung konfiguriert sind, wird gegenseitiges TLS (mTLS) von DPS unterstützt.
Algorithmusanforderungen für die DPS-Verschlüsselung
Der Gerätebereitstellungsdienst akzeptiert nur X.509-Zertifikate, die für die Verschlüsselung entweder den RSA-Algorithmus (Rivest-Shamir-Adleman) oder den ECC-Algorithmus (Elliptic Curve Cryptography; Kryptografie für elliptische Kurve) verwenden. ECC und RSA bieten eine gleichwertige Verschlüsselungssicherheit. ECC verwendet jedoch kürzere Schlüssel.
Wenn Sie ECC-Methoden verwenden, um X.509-Zertifikate für den Gerätenachweis zu generieren, empfehlen wir die folgenden elliptischen Kurven:
- nistP256
- nistP384
- nistP521
Benennungsanforderungen für DPS-Zertifikate
Für Blattzertifikate, die zusammen mit Einträgen von Einzelregistrierungen verwendet werden, muss der allgemeine Name (Common Name, CN) des Antragstellers auf die Registrierungs-ID festgelegt sein. Die Registrierungs-ID identifiziert die Geräteregistrierung bei DPS und muss für die DPS-Instanz (ID-Bereich) eindeutig sein, bei der sich das Gerät registriert.
Bei Registrierungsgruppen legt der allgemeine Name (Common Name, CN) des Antragstellers die Geräte-ID fest, die bei IoT Hub registriert wurde. Die Geräte-ID wird in den Registrierungsdatensätzen für das authentifizierte Gerät in der Registrierungsgruppe angezeigt. Bei individuellen Registrierungen kann die Geräte-ID im Registrierungseintrag festgelegt werden. Wenn sie im Registrierungseintrag nicht festgelegt ist, wird der allgemeine Name (Common Name, CN) des Antragstellers verwendet.
Weitere Informationen finden Sie unter Authentifizieren von Geräten, die mit X.509-Zertifikaten signiert sind.
Anforderungen für DPS-Gerätekette
Wenn ein Gerät versucht, die Registrierung per DPS mit einer Registrierungsgruppe durchzuführen, muss das Gerät die Zertifikatkette vom Blattzertifikat an ein überprüftes Zertifikat senden. Andernfalls schlägt die Authentifizierung fehl.
Wenn beispielsweise nur das Stammzertifikat verifiziert und ein Zwischenzertifikat in die Registrierungsgruppe hochgeladen wird, sollte vom Gerät die Zertifikatkette vom untergeordneten Zertifikat durchgehend bis zum verifizierten Stammzertifikat bereitgestellt werden. Diese Zertifikatkette enthält dann alle beteiligten Zwischenzertifikate. Bei der Authentifizierung tritt ein Fehler auf, wenn die Zertifikatkette von DPS nicht bis zu einem verifizierten Zertifikat durchlaufen werden kann.
Angenommen, ein großes Unternehmen verwendet die unten angegebene Gerätekette für ein Gerät.
In diesem Beispiel wird das Stammzertifikat mit DPS überprüft, und das Zertifikat intermediate2
wird in die Registrierungsgruppe hochgeladen.
Bei der Authentifizierung tritt ein Fehler auf, wenn das Gerät während der Bereitstellung nur die folgende Gerätekette übermittelt. Der Grund ist, dass DPS kein Authentifizierungsversuch durchführen kann, ohne dass die Gültigkeit des Zertifikats intermediate1
bestätigt wurde.
Wenn das Gerät während der Bereitstellung die vollständige Gerätekette wie folgt sendet, kann vom DPS versucht werden, die Authentifizierung des Geräts durchzuführen.
DPS-Reihenfolge für Vorgänge mit Zertifikaten
Wenn sich ein Gerät mit dem Bereitstellungsdienst verbindet, durchläuft der Dienst seine Zertifikatkette, beginnend mit dem Geräte- bzw. untergeordneten Zertifikat, und sucht nach einem entsprechenden Registrierungseintrag. Es verwendet den ersten in der Kette gefundenen Eintrag, um zu entscheiden, ob das Gerät bereitgestellt werden soll. Wenn also eine Einzelregistrierung für das Gerätezertifikat vorhanden ist, wendet der Bereitstellungsdienst diesen Eintrag an. Wenn es keine individuelle Registrierung für das Gerät gibt, sucht der Dienst nach einer Registrierungsgruppe, die dem ersten Zwischenzertifikat entspricht. Falls einer gefunden wird, übernimmt der Dienst diesen Eintrag. Andernfalls sucht er nach einer Registrierungsgruppe für das jeweils nächste Zwischenzertifikat in der Kette bis zum Stammzertifikat.
Der Dienst übernimmt den ersten Eintrag, den er findet, sodass Folgendes gilt:
- Wenn der erste gefundene Registrierungseintrag aktiviert ist, stellt der Dienst das Gerät bereit.
- Wenn der erste gefundene Registrierungseintrag deaktiviert ist, stellt der Dienst das Gerät nicht bereit.
- Wenn für keines der Zertifikate in der Zertifikatkette des Geräts ein Registrierungseintrag gefunden wird, stellt der Dienst das Gerät nicht bereit.
Jedes Zertifikat in der Zertifikatkette eines Geräts kann in einem Registrierungseintrag angegeben werden, aber es kann nur in einem Eintrag in der DPS-Instanz angegeben werden.
Dieser Mechanismus und die hierarchische Struktur von Zertifikatketten bieten ein hohes Maß an Flexibilität bei der Steuerung des Zugriffs für einzelne Geräte und Gerätegruppen. Nehmen Sie beispielsweise an, Sie verfügen über fünf Geräte mit folgenden Zertifikatketten:
- Gerät 1: Stammzertifikat -> Zertifikat A -> Zertifikat für Gerät 1
- Gerät 2: Stammzertifikat -> Zertifikat A -> Zertifikat für Gerät 2
- Gerät 3: Stammzertifikat -> Zertifikat A -> Zertifikat für Gerät 3
- Gerät 4: Stammzertifikat -> Zertifikat B -> Zertifikat für Gerät 4
- Gerät 5: Stammzertifikat -> Zertifikat B -> Zertifikat für Gerät 5
Anfangs können Sie einen einzigen aktivierten Gruppenregistrierungseintrag für das Stammzertifikat erstellen, um allen fünf Geräten den Zugriff zu ermöglichen. Sollte zu einem späteren Zeitpunkt Zertifikat B kompromittiert werden, können Sie einen deaktivierten Registrierungsgruppeneintrag für Zertifikat B erstellen, um die Registrierung von Gerät 4 und Gerät 5 zu verhindern. Wenn später auch Gerät 3 kompromittiert wird, können Sie einen deaktivierten Registrierungseintrag für das Zertifikat dieses Geräts erstellen. Damit wird der Zugriff für Gerät 3 widerrufen, Gerät 1 und Gerät 2 können sich jedoch weiterhin registrieren.