Übung: Ein X.509-Zertifizierungsstellenzertifikat mit OpenSSL generieren und konfigurieren
In dieser Übung generieren Sie ein X.509-Zertifizierungsstellenzertifikat mithilfe von OpenSSL innerhalb der Azure Cloud Shell,. Anschließend erstellen Sie eine Registrierungsgruppe in Ihrer DPS-Instanz (Device Provisioning Service) für IoT-Geräte, die mit X.509-Authentifizierung bereitgestellt werden sollen.
Mit diesem X.509-Zertifizierungsstellenzertifikat werden die Gerätezertifikate für jedes Gerät in dieser Registrierungsgruppe signiert. Die Registrierungsgruppe in DPS benötigt nur eine Kopie dieses obersten Zertifizierungsstellenzertifikats. Wenn ein Gerät für die Bereitstellung eine Verbindung mit DPS herstellt, stellt es seine Zertifizierungskette dar, die sein Gerätezertifikat, alle Zwischenzertifikate und das oberste Zertifizierungsstellenzertifikat zeigt.
Aufgabe 1: Generieren von Stamm- und Zwischenzertifizierungsstellenzertifikaten
In diesem Abschnitt generieren Sie mithilfe von OpenSSL ein X.509-Zertifizierungsstellenzertifikat. Dieses Zertifikat wird zum Konfigurieren einer Gruppenregistrierung in DPS verwendet.
Erstellen Sie in der Azure-Sandbox ein Verzeichnis mit dem Namen certificates, und wechseln Sie dann mit den folgenden Befehlen in ein neues Verzeichnis:
mkdir certificates cd certificates
Laden Sie ein Hilfsskript und zwei OpenSSL-Konfigurationsdateien herunter, die Sie zum Erstellen von X.509-Zertifikaten verwenden werden.
Herunterladen von Dateien
curl https://raw.githubusercontent.com/Azure/azure-iot-sdk-c/main/tools/CACertificates/certGen.sh --output certGen.sh curl https://raw.githubusercontent.com/Azure/azure-iot-sdk-c/main/tools/CACertificates/openssl_device_intermediate_ca.cnf --output openssl_device_intermediate_ca.cnf curl https://raw.githubusercontent.com/Azure/azure-iot-sdk-c/main/tools/CACertificates/openssl_root_ca.cnf --output openssl_root_ca.cnf
Aktualisieren Sie die Skriptberechtigungen, damit Benutzer*innen das Skript lesen, schreiben und ausführen können.
chmod 700 certGen.sh
Das Hilfsskript und die unterstützenden Dateien werden in dem auf GitHub gehosteten Open Source-Projekt Azure/azure-iot-sdk-c gehostet. Dies ist eine Komponente des Azure IoT-Geräte-SDK. Das Hilfsskript certGen.sh bietet Ihnen die Möglichkeit, zu sehen, wie Zertifizierungsstellenzertifikate verwendet werden, ohne zu tief in die Besonderheiten der OpenSSL-Konfiguration einzutauchen (die außerhalb des Rahmens dieses Moduls liegt).
Weitere Anleitungen zur Verwendung dieses Hilfsskripts und zur Verwendung von PowerShell anstelle von Bash finden Sie unter: Verwalten von Zertifizierungsstellen-Testzertifikaten für Beispiele und Tutorials
Warnung
Von diesem Hilfsskript erstellte Zertifikate DÜRFEN NICHT für die Produktion verwendet werden. Sie enthalten hartcodierte Kennwörter (1234), laufen nach 30 Tagen ab und werden nur zu Demonstrationszwecken bereitgestellt. Bei der Verwendung von Zertifizierungsstellenzertifikaten in der Produktion müssen Sie unbedingt die bewährten Sicherheitsmethoden Ihres Unternehmens für die Zertifikaterstellung und die Lebensdauerverwaltung anwenden.
Wenn Sie daran interessiert sind, können Sie den Inhalt der heruntergeladenen Skriptdatei mit dem Befehl
cat
schnell lesen.cat certGen.sh
Geben Sie den folgenden Befehl ein, um Stamm- und Zwischenzertifikate zu generieren:
./certGen.sh create_root_and_intermediate
Beachten Sie, dass Sie das Skript mit der Option create_root_and_intermediate ausgeführt haben. Bei diesem Befehl wird davon ausgegangen, dass Sie das Skript aus dem Verzeichnis ~/certificates ausführen.
Mit dieser Befehl wurde ein Stammzertifizierungsstellenzertifikat namens azure-iot-test-only.root.ca.cert.pem generiert und im Verzeichnis ./certs (unter dem von Ihnen erstellten Verzeichnis „certificates“) abgelegt.
Aufgabe 2: Erstellen einer Gruppenregistrierung (X.509-Zertifikat) in DPS
Laden Sie Ihr Zertifizierungsstellenzertifikat in der Azure-Sandbox in Ihre Device Provisioning Service-Instanz hoch. Der Zertifikatsname lautet
groupCA-sensors
. Durch Angabe des Befehlsparametersverified true
kann das Zertifikats beim Hochladen automatisch überprüft werden, wobei die Notwendigkeit eines zusätzlichen Schritts für die Erstellung von Zertifikatnachweisen umgangen wird.az iot dps certificate create --dps-name dps-$suffix --certificate-name groupCA-sensors --path ~/certificates/certs/azure-iot-test-only.root.ca.cert.pem --verified true
Erstellen Sie eine Registrierungsgruppe in Ihrer DPS-Instanz.
az iot dps enrollment-group create --dps-name dps-$suffix --enrollment-id enrollgroup-sensors --root-ca-name groupCA-sensors --iot-hubs hub-$suffix.azure-devices.net --initial-twin-properties "{'telemetryDelay':'1'}" --allocation-policy static
Mit diesem Befehl wird eine Registrierungsgruppe mit den folgenden Parametern erstellt:
Parameter Beschreibung --dps-name
Der DPS-Bezeichner. --enrollment-id
Der Name der neuen Registrierungsgruppe. --root-ca-name
Legt die Nachweismethode für die Registrierungsgruppe auf X.509-Zertifizierungsstellenzertifikate fest und verweist auf das Zertifizierungsstellenzertifikat, das Sie in DPS hochgeladen haben. --iot-hubs
Konfiguriert DPS so, dass die Geräte in dieser Registrierungsgruppe für den IoT-Hub, den Sie am Anfang dieses Moduls erstellt und mit DPS verknüpft haben, bereitgestellt werden. --initial-twin-properties
Legt eine gewünschte Eigenschaft fest, die alle Geräte in dieser Registrierungsgruppe erhalten, sobald sie bereitgestellt worden sind. Die Geräte verwenden die Eigenschaft properties.desired.telemetryDelay, um die Zeitverzögerung für das Lesen und Senden von Telemetriedaten an IoT Hub festzulegen. allocation-policy
Wird verwendet, um zu bestimmen, wie ein Gerät einem IoT Hub zugewiesen wird. Mit dieser Richtlinie können Sie einen einzelnen spezifischen IoT-Hub bestimmen, dem Sie Geräte zuordnen möchten.
Ihre Arbeit überprüfen
Überprüfen Sie, ob die Stammzertifizierungsstellendatei azure-iot-test-only.root.ca.cert.pem im Ordner „/certs“ erstellt wurde.
dir ~/certificates/certs/
Vergewissern Sie sich, dass das Zertifizierungsstellenzertifikat in Ihre DPS-Instanz (Device Provisioning Service) hochgeladen wurde.
az iot dps certificate show --certificate-name groupCA-sensors --dps-name dps-$suffix
Überprüfen Sie die Rückgabeinformationen des Befehls. Vergewissern Sie sich, dass der Name des Zertifizierungsstellenzertifikats wie hier dargestellt
groupCA-sensors
lautet."name": "groupCA-sensors"
Untersuchen Sie die Rückgabeinformationen dieses Befehls, um zu überprüfen, ob die DPS-Registrierungsgruppe mit den Parametern, die Sie in der
az iot dps certificate create
-Anweisung in Aufgabe 2, Schritt 2 angegeben haben, erstellt wurde.az iot dps enrollment-group show --dps-name dps-$suffix --enrollment-id enrollgroup-sensors