Erstellen von Demozertifikaten zum Testen der Features von IoT Edge-Geräten

Gilt für: Häkchen für IoT Edge 1.5 IoT Edge 1.5 IoT Edge 1.4 Häkchen IoT Edge 1.4

Wichtig

IoT Edge 1.5 LTS und IoT Edge 1.4 LTS sind unterstützte Releases. Das Ende der Lebensdauer von IoT Edge 1.4 LTS wird am 12. November 2024 erreicht. Wenn Sie ein früheres Release verwenden, finden Sie weitere Informationen unter Aktualisieren von IoT Edge.

IoT Edge-Geräte benötigen Zertifikate für die sichere Kommunikation zwischen der Runtime, den Modulen und etwaigen Downstreamgeräten. Wenn Sie nicht über eine Zertifizierungsstelle verfügen, um die erforderlichen Zertifikate zu erstellen, können Sie mithilfe von Demozertifikaten IoT Edge-Features in Ihrer Testumgebung testen. In diesem Artikel werden die Funktionen der Zertifikatgenerierungsskripts beschrieben, die IoT Edge zu Testzwecken bereitstellt.

Warnung

Diese Zertifikate laufen nach 30 Tagen ab und sollten nicht in Produktionsszenarien verwendet werden.

Sie können Zertifikate auf jedem Computer erstellen und dann auf Ihr IoT Edge Gerät kopieren oder die Zertifikate direkt auf dem IoT Edge-Gerät generieren.

Voraussetzungen

Ein Entwicklungscomputer mit installiertem Git

Herunterladen von Testzertifikatskripts und Einrichten des Arbeitsverzeichniss

Das IoT Edge-Repository auf GitHub enthält Skripts zur Zertifikatgenerierung, die Sie zum Erstellen von Demozertifikaten verwenden können. Dieser Abschnitt enthält Anweisungen zum Vorbereiten der Skripts, damit diese unter Windows oder Linux auf Ihrem Computer ausgeführt werden können.

Zum Erstellen von Demozertifikaten auf einem Windows-Gerät müssen Sie OpenSSL installieren und dann die Generierungsskripts klonen und für die lokale Ausführung in PowerShell einrichten.

OpenSSL installieren

Installieren Sie OpenSSL für Windows auf dem Computer, den Sie zum Generieren der Zertifikate verwenden. Wenn Sie OpenSSL auf Ihrem Windows-Gerät bereits installiert haben, stellen Sie sicher, dass „openssl.exe“ in Ihrer PATH-Umgebungsvariablen zur Verfügung steht.

Es gibt mehrere Möglichkeiten zum Installieren von OpenSSL, einschließlich der folgenden Optionen:

  • Einfacher: Laden Sie beliebige Binärdateien von OpenSSL-Drittanbietern herunter, z. B. von OpenSSL auf SourceForge, und installieren Sie sie. Fügen Sie „openssl.exe“ den vollständigen Pfad zu Ihrer PATH-Umgebungsvariablen hinzu.

  • Empfohlen: Laden Sie den OpenSSL-Quellcode herunter, und erstellen Sie die Binärdateien entweder selbst oder mithilfe von vcpkg auf Ihrem Computer. In den nachfolgend aufgeführten Anweisungen wird in benutzerfreundlichen Schritten „vcpkg“ zum Herunterladen des Quellcodes sowie zum Kompilieren und Installieren von OpenSSL auf Ihrem Windows-Computer verwendet.

    1. Navigieren Sie zu einem Verzeichnis, in dem Sie „vcpkg“ installieren möchten. Folgen Sie den Anweisungen zum Herunterladen und Installieren von vcpkg.

    2. Führen Sie nach der Installation von vcpkg über eine PowerShell-Eingabeaufforderung den folgenden Befehl für die Installation des OpenSSL-Pakets für Windows x64 aus. Diese Installation dauert in der Regel 5 Minuten.

      .\vcpkg install openssl:x64-windows
      
    3. Fügen Sie <vcpkg path>\installed\x64-windows\tools\openssl Ihrer PATH-Umgebungsvariablen hinzu, damit die Datei „openssl.exe“ aufgerufen werden kann.

Vorbereiten von Skripts in PowerShell

Das Azure IoT Edge-Git-Repository enthält Skripts, mit denen Sie Testzertifikate erstellen können. In diesem Abschnitt klonen Sie das IoT Edge-Repository und führen die Skripts aus.

  1. Öffnen Sie ein PowerShell-Fenster im Administratormodus.

  2. Klonen Sie das IoT Edge-Git-Repository, das Skripts zum Generieren von Demozertifikaten enthält. Verwenden Sie den Befehl git clone, oder laden Sie die ZIP-Datei herunter.

    git clone https://github.com/Azure/iotedge.git
    
  3. Erstellen Sie ein Verzeichnis, in dem Sie die Zertifikatskripts dort kopieren möchten. Alle Zertifikat- und Schlüsseldateien werden in diesem Verzeichnis erstellt.

    mkdir wrkdir
    cd .\wrkdir\
    cp ..\iotedge\tools\CACertificates\*.cnf .
    cp ..\iotedge\tools\CACertificates\ca-certs.ps1 .
    

    Wenn Sie das Repository als ZIP-Datei heruntergeladen haben, lautet der Ordnername iotedge-master. Der Rest des Pfads ist identisch.

  4. Aktivieren Sie PowerShell zum Ausführen der Skripts.

    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
    
  5. Fügen Sie die Funktionen, die von den Skripts verwendet werden, in den globalen Namespace von PowerShell ein.

    . .\ca-certs.ps1
    

    Im PowerShell-Fenster wird eine Warnung angezeigt, das die von diesem Skript generierten Zertifikate ausschließlich für Testzwecke vorgesehen sind und nicht in Produktionsszenarien verwendet werden sollten.

  6. Überprüfen Sie, ob OpenSSL richtig installiert wurde und keine Namenskonflikte mit vorhandenen Zertifikaten entstehen. Wenn Probleme auftreten, sollte die Skriptausgabe Informationen darüber enthalten, wie diese auf Ihrem System behoben werden können.

    Test-CACertsPrerequisites
    

Erstellen des Stammzertifizierungsstellen-Zertifikats

Führen Sie dieses Skript aus, um eine Stamm-ZS zu generieren, die für jeden Schritt in diesem Artikel erforderlich ist.

Das Stammzertifizierungsstellen-Zertifikat wird verwendet, um alle anderen Demozertifikate zum Testen eines IoT Edge-Szenarios zu erstellen. Sie können dasselbe Stammzertifizierungsstellen-Zertifikat weiterhin verwenden, um Demozertifikate für mehrere IoT Edge- oder Downstreamgeräte zu erstellen.

Wenn Sie bereits über ein Stammzertifizierungsstellen-Zertifikat in Ihrem Arbeitsordner verfügen, erstellen Sie kein neues. Das neue Stammzertifizierungsstellen-Zertifikat überschreibt das alte, und alle mit dem alten erstellten Downstreamzertifikate funktionieren nicht mehr. Wenn Sie mehrere Stammzertifizierungsstellen-Zertifikate benötigen, achten Sie darauf, sie in getrennten Ordnern zu verwalten.

  1. Navigieren Sie zu dem Arbeitsverzeichnis wrkdir, in dem Sie die Skripts für die Zertifikatgenerierungsskripts gespeichert haben.

  2. Erstellen Sie das Zertifikat der Stammzertifizierungsstelle, und signieren Sie damit ein Zwischenzertifikat. Die Zertifikate werden alle im Arbeitsverzeichnis gespeichert.

    New-CACertsCertChain rsa
    

    Dieser Skriptbefehl erstellt mehrere Zertifikat- und Schlüsseldateien. Wenn in Artikeln jedoch das Stammzertifizierungsstellen-Zertifikat gefordert wird, verwenden Sie die folgende Datei:

    certs\azure-iot-test-only.root.ca.cert.pem

Dieses Zertifikat ist erforderlich, bevor Sie weitere Zertifikate für Ihre IoT Edge-Geräte und Downstreamgeräte erstellen können, wie in den nächsten Abschnitten beschrieben.

Erstellen eines Identitätszertifikats für das IoT Edge-Gerät

Geräteidentitätszertifikate werden zum Bereitstellen von IoT Edge-Geräten verwendet, wenn Sie X.509-Zertifikatauthentifizierung wählen. Wenn Sie symmetrische Schlüssel zum Authentifizieren für IoT Hub oder DPS verwenden, sind diese Zertifikate nicht erforderlich, und Sie können diesen Abschnitt überspringen.

Diese Zertifikate funktionieren unabhängig davon, ob Sie manuelle Bereitstellung oder automatische Bereitstellung über den Azure IoT Hub Device Provisioning Service (DPS) verwenden.

Geräteidentitätszertifikate werden auf dem IoT Edge-Gerät im Abschnitt Bereitstellung der Konfigurationsdatei gespeichert.

  1. Navigieren Sie zu dem Arbeitsverzeichnis wrkdir, in dem sich die Skripts für die Zertifikatgenerierungsskripts und das Stammzertifizierungsstellen-Zertifikat befinden.

  2. Erstellen Sie mit dem folgenden Befehl das IoT Edge-Geräteidentitätszertifikat und den privaten Schlüssel.

    New-CACertsEdgeDeviceIdentity "<device-id>"
    

    Der Name, den Sie an diesen Befehl übergeben, ist die Geräte-ID für das IoT Edge-Gerät in IoT Hub.

  3. Der Befehl für eine neue Geräteidentität erstellt mehrere Zertifikat- und Schlüsseldateien:

    type Datei Beschreibung
    Geräteidentitätszertifikat auswählen certs\iot-edge-device-identity-<device-id>.cert.pem Signiert durch das Zwischenzertifikat, das zuvor generiert wurde. Enthält nur das Identitätszertifikat. Geben Sie in der Konfigurationsdatei für die einzelne DPS-Registrierung oder IoT Hub-Bereitstellung an.
    Hinzufügen von Kettenzertifikaten certs\iot-edge-device-identity-<device-id>-full-chain.cert.pem Enthält die vollständige Zertifikatkette einschließlich des Zwischenzertifikats. Geben Sie in der Konfigurationsdatei für IoT Edge an DPS für die Bereitstellung der Gruppenregistrierung an.
    Privater Schlüssel private\iot-edge-device-identity-<device-id>.key.pem Privater Schlüssel, der dem Geräteidentitätszertifikat zugeordnet ist. Sollte in der Konfigurationsdatei angegeben werden, solange Sie eine Art Zertifikatauthentifizierung (Fingerabdruck oder ZS) für DPS oder IoT Hub verwenden.

Erstellen von Edgezertifizierungsstellenzertifikaten

Diese Zertifikate sind für Gateway-Szenarien erforderlich, weil das Edgezertifizierungsstellenzertifikat damit seine Identität gegenüber Downstreamgeräten nachweist. Sie können diesen Abschnitt überspringen, wenn Sie keine nachgelagerten Geräte mit IoT Edge verbinden.

Das Edgezertifizierungsstellenzertifikat ist auch für das Erstellen von Zertifikaten für Module verantwortlich, die auf dem Gerät ausgeführt werden, aber die IoT Edge-Rumtime kann temporäre Zertifikate erstellen, wenn keine Edgezertifizierungsstelle konfiguriert ist. Edge-Zertifizierungsstellenzertifikate werden auf dem IoT Edge-Gerät im Abschnitt Edge-Zertifizierungsstelle der config.toml-Datei abgelegt. Weitere Informationen finden Sie unter Grundlegendes zur Verwendung von Zertifikaten durch Azure IoT Edge.

  1. Navigieren Sie zu dem Arbeitsverzeichnis wrkdir, in dem sich die Skripts für die Zertifikatgenerierungsskripts und das Stammzertifizierungsstellen-Zertifikat befinden.

  2. Erstellen Sie mit dem folgenden Befehl das IoT Edge-Zertifizierungsstellenzertifikat und den privaten Schlüssel. Geben Sie einen Namen für das Zertifizierungsstellenzertifikat an. Der an den Befehl New-CACertsEdgeDevice übergebene Name sollte mit dem Hostnamenparameter in der Konfigurationsdatei oder der ID des Geräts in IoT Hub nicht identisch sein.

    New-CACertsEdgeDevice "<CA cert name>"
    
  3. Mit diesem Befehl werden mehrere Zertifikat- und Schlüsseldateien erstellt. Das folgende Paar aus Zertifikat und Schlüssel muss auf ein IoT Edge-Gerät kopiert und in der Konfigurationsdatei darauf verwiesen werden:

    • certs\iot-edge-device-ca-<CA cert name>-full-chain.cert.pem
    • private\iot-edge-device-ca-<CA cert name>.key.pem

Erstellen von Zertifikaten für nachgeschaltete Geräte

Diese Zertifikate sind für das Einrichten eines nachgelagerten IoT-Geräts für ein Gateway-Szenario erforderlich und möchten die X.509-Authentifizierung mit IoT Hub oder DPS verwenden. Falls Sie die Authentifizierung mit symmetrischem Schlüssel verwenden möchten, müssen Sie keine zusätzlichen Zertifikate für das Downstream-Gerät erstellen.

Es gibt zwei Möglichkeiten, ein IoT-Gerät mit X.509-Zertifikaten zu authentifizieren: mit selbst signierten Zertifikaten oder mit von einer Zertifizierungsstelle signierten Zertifikaten.

  • Für die Authentifizierung mit selbstsignierten X.509-Zertifikaten, auch als Fingerabdruck-Authentifizierung bezeichnet, müssen Sie neue Zertifikate erstellen und auf Ihrem IoT-Gerät speichern. Diese Zertifikate verfügen über einen Fingerabdruck, den Sie für die Authentifizierung an IoT Hub übergeben.
  • Für die Authentifizierung mit X.509-Zertifikaten, die von einer Zertifizierungsstelle (ZS) signiert wurden, muss in IoT Hub oder DPS ein Zertifikat einer Stammzertifizierungsstelle registriert sein, mit dem Sie die Zertifikate für Ihre IoT-Geräte signieren. Jedes Gerät mit einem Zertifikat, das vom Stammzertifikat der ZS ausgestellt wurde, oder eines seiner Zwischenzertifikate kann authentifiziert werden, solange die vollständige Kette vom Gerät präsentiert wird.

Die Zertifikatgenerierungsskripts können dabei helfen, Demozertifikate zu erstellen, um diese Authentifizierungsszenarien zu testen.

Selbstsignierte Zertifikate

Wenn Sie ein IoT-Gerät mit selbst signierten Zertifikaten authentifizieren, müssen Sie Gerätezertifikate basierend auf dem Stammzertifizierungsstellen-Zertifikat für Ihre Lösung erstellen. Anschließend rufen Sie einen hexadezimalen „Fingerabdruck“ aus den Zertifikaten ab, der gegenüber IoT Hub bereitgestellt wird. Das IoT-Gerät benötigt außerdem eine Kopie seiner Gerätezertifikate, damit die Authentifizierung bei IoT Hub erfolgen kann.

  1. Navigieren Sie zu dem Arbeitsverzeichnis wrkdir, in dem sich die Skripts für die Zertifikatgenerierungsskripts und das Stammzertifizierungsstellen-Zertifikat befinden.

  2. Erstellen Sie zwei Zertifikate (primär und sekundär) für das nachgeschaltete Gerät. Eine einfache Namenskonvention ist das Erstellen der Zertifikate mit dem Namen des IoT-Geräts und dann der primären oder sekundären Bezeichnung. Zum Beispiel:

    New-CACertsDevice "<device ID>-primary"
    New-CACertsDevice "<device ID>-secondary"
    

    Mit diesem Skriptbefehl werden mehrere Zertifikat- und Schlüsseldateien erstellt. Die folgenden Zertifikat-Schlüssel-Paare müssen auf das Downstream-IoT-Gerät kopiert und in den Anwendungen referenziert werden, die eine Verbindung mit IoT Hub herstellen:

    • certs\iot-device-<device ID>-primary-full-chain.cert.pem
    • certs\iot-device-<device ID>-secondary-full-chain.cert.pem
    • certs\iot-device-<device ID>-primary.cert.pem
    • certs\iot-device-<device ID>-secondary.cert.pem
    • certs\iot-device-<device ID>-primary.cert.pfx
    • certs\iot-device-<device ID>-secondary.cert.pfx
    • private\iot-device-<device ID>-primary.key.pem
    • private\iot-device-<device ID>-secondary.key.pem
  3. Rufen Sie den SHA1-Fingerabdruck (im IoT Hub-Kontext auch als „Fingerabdruck“ bezeichnet) aus jedem Zertifikat ab. Der Fingerabdruck ist eine hexadezimale Zeichenfolge mit 40 Zeichen. Verwenden Sie den folgenden OpenSSL-Befehl, um das Zertifikat anzuzeigen und den Fingerabdruck zu suchen:

    Write-Host (Get-Pfxcertificate -FilePath certs\iot-device-<device name>-primary.cert.pem).Thumbprint
    

    Führen Sie diesen Befehl zweimal aus – einmal für das primäre Zertifikat und einmal für das sekundäre Zertifikat. Sie geben Fingerabdrücke für beide Zertifikate an, wenn Sie ein neues IoT-Gerät mithilfe von selbst signierten X.509-Zertifikaten registrieren.

Von einer Zertifizierungsstelle signierte Zertifikate

Wenn Sie ein IoT-Gerät mit von einer Zertifizierungsstelle signierten Zertifikaten authentifizieren, müssen Sie das Stammzertifizierungsstellen-Zertifikat für Ihre Lösung in IoT Hub hochladen. Schließlich verwenden Sie das gleiche Stamm-ZS-Zertifikat zum Erstellen von Gerätezertifikaten, die auf dem IoT-Gerät abgelegt werden, damit es sich bei IoT Hub authentifizieren kann.

Die Zertifikate in diesem Abschnitt sind für die Schritte in der Tutorialreihe „IoT Hub X.509-Zertifikate“ vorgesehen. Informationen zur Einführung dieser Reihe finden Sie unter Grundlegendes zur Kryptografie mit öffentlichen Schlüsseln und zur X.509 Public Key-Infrastruktur.

  1. Laden Sie die Stammzertifizierungsstellen-Zertifikatsdatei aus Ihrem Arbeitsverzeichnis (certs\azure-iot-test-only.root.ca.cert.pem) auf Ihren IoT-Hub hoch.

  2. Verwenden Sie den im Azure-Portal bereitgestellten Code, um zu verifizieren, dass Sie das Stamm-ZS-Zertifikat besitzen.

    New-CACertsVerificationCert "<verification code>"
    
  3. Erstellen Sie eine Vertrauenskette für das nachgeschaltete Gerät. Verwenden Sie dieselbe Geräte-ID, mit der das Gerät bei IoT Hub registriert ist.

    New-CACertsDevice "<device id>"
    

    Mit diesem Skriptbefehl werden mehrere Zertifikat- und Schlüsseldateien erstellt. Die folgenden Zertifikat-Schlüssel-Paare müssen auf das Downstream-IoT-Gerät kopiert und in den Anwendungen referenziert werden, die eine Verbindung mit IoT Hub herstellen:

    • certs\iot-device-<device id>.cert.pem
    • certs\iot-device-<device id>.cert.pfx
    • certs\iot-device-<device id>-full-chain.cert.pem
    • private\iot-device-<device id>.key.pem