Übung: Ein X.509-Zertifizierungsstellenzertifikat mit OpenSSL generieren und konfigurieren

Abgeschlossen

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.

  1. 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
    
  2. 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
    
  3. 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

  1. Laden Sie Ihr Zertifizierungsstellenzertifikat in der Azure-Sandbox in Ihre Device Provisioning Service-Instanz hoch. Der Zertifikatsname lautet groupCA-sensors. Durch Angabe des Befehlsparameters verified 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
    
  2. 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

  1. Überprüfen Sie, ob die Stammzertifizierungsstellendatei azure-iot-test-only.root.ca.cert.pem im Ordner „/certs“ erstellt wurde.

    dir ~/certificates/certs/
    
  2. 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"
    
  3. 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