Integration von Hardware-Sicherheit - AWS IoT Greengrass

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Integration von Hardware-Sicherheit

Anmerkung

Diese Funktion ist für v2.5.3 und höher der Greengrass-Kernkomponente verfügbar. unterstützt diese Funktion derzeit AWS IoT Greengrass nicht auf Windows-Kerngeräten.

Sie können die AWS IoT Greengrass -Core-Software so konfigurieren, dass sie ein Hardware-Sicherheitsmodul (HSM) über die PKCS#11-Schnittstelle verwendet. Mit dieser Funktion können Sie den privaten Schlüssel und das Zertifikat des Geräts sicher speichern, sodass sie nicht in der Software verfügbar gemacht oder dupliziert werden. Sie können den privaten Schlüssel und das Zertifikat in einem Hardwaremodul wie einem HSM oder einem Trusted Platform Module (TPM) speichern.

Die -AWS IoT GreengrassCore-Software verwendet einen privaten Schlüssel und ein X.509-Zertifikat, um Verbindungen zu den - AWS IoT und -AWS IoT GreengrassServices zu authentifizieren. Die Secret-Manager-Komponente verwendet diesen privaten Schlüssel, um die Secrets, die Sie auf einem Greengrass-Kerngerät bereitstellen, sicher zu verschlüsseln und zu entschlüsseln. Wenn Sie ein Core-Gerät für die Verwendung eines HSM konfigurieren, verwenden diese Komponenten den privaten Schlüssel und das Zertifikat, die Sie im HSM speichern.

Die Moquette MQTT-Brokerkomponente speichert auch einen privaten Schlüssel für ihr lokales MQTT-Serverzertifikat. Diese Komponente speichert den privaten Schlüssel auf dem Dateisystem des Geräts im Arbeitsordner der Komponente. Derzeit unterstützt AWS IoT Greengrass nicht das Speichern dieses privaten Schlüssels oder Zertifikats in einem HSM.

Tipp

Suchen Sie im AWS Partner Device Catalog nach Geräten, die diese Funktion unterstützen.

Voraussetzungen

Sie müssen die folgenden Anforderungen erfüllen, um ein HSM auf einem Greengrass-Core-Gerät verwenden zu können:

  • Greengrass-Kern v2.5.3 oder höher auf dem Core-Gerät installiert. Sie können eine kompatible Version auswählen, wenn Sie die AWS IoT Greengrass Core-Software auf einem Core-Gerät installieren.

  • Die auf dem Core-Gerät installierte PKCS#11-Anbieterkomponente. Sie können diese Komponente herunterladen und installieren, wenn Sie die AWS IoT Greengrass Core-Software auf einem Core-Gerät installieren.

  • Ein Hardware-Sicherheitsmodul, das das PKCS#1 v1.5-Signaturschema und RSA-Schlüssel mit einer RSA-2048-Schlüsselgröße (oder größer) oder ECC-Schlüsseln unterstützt.

    Anmerkung

    Um ein Hardware-Sicherheitsmodul mit ECC-Schlüsseln zu verwenden, müssen Sie Greengrass-Kern v2.5.6 oder höher verwenden.

    Um ein Hardware-Sicherheitsmodul und einen Secret Manager zu verwenden, müssen Sie ein Hardware-Sicherheitsmodul mit RSA-Schlüsseln verwenden.

  • Eine PKCS#11-Anbieterbibliothek, die die AWS IoT Greengrass -Core-Software zur Laufzeit (mit libdl) laden kann, um PKCS#11-Funktionen aufzurufen. Die PKCS#11-Anbieterbibliothek muss die folgenden PKCS#11-API-Operationen implementieren:

    • C_Initialize

    • C_Finalize

    • C_GetSlotList

    • C_GetSlotInfo

    • C_GetTokenInfo

    • C_OpenSession

    • C_GetSessionInfo

    • C_CloseSession

    • C_Login

    • C_Logout

    • C_GetAttributeValue

    • C_FindObjectsInit

    • C_FindObjects

    • C_FindObjectsFinal

    • C_DecryptInit

    • C_Decrypt

    • C_DecryptUpdate

    • C_DecryptFinal

    • C_SignInit

    • C_Sign

    • C_SignUpdate

    • C_SignFinal

    • C_GetMechanismList

    • C_GetMechanismInfo

    • C_GetInfo

    • C_GetFunctionList

  • Das Hardwaremodul muss nach Slot-Label auflösbar sein, wie in der PKCS#11-Spezifikation definiert.

  • Sie müssen den privaten Schlüssel und das Zertifikat im HSM im selben Slot speichern und dieselbe Objektbezeichnung und Objekt-ID verwenden, wenn das HSM Objekt-IDs unterstützt.

  • Das Zertifikat und der private Schlüssel müssen durch Objektbezeichnungen auflösbar sein.

  • Der private Schlüssel muss über die folgenden Berechtigungen verfügen:

    • sign

    • decrypt

  • (Optional) Um die Secret-Manager-Komponente zu verwenden, müssen Sie Version 2.1.0 oder höher verwenden und der private Schlüssel muss über die folgenden Berechtigungen verfügen:

    • unwrap

    • wrap

Bewährte Methoden für die Hardwaresicherheit

Beachten Sie die folgenden bewährten Methoden, wenn Sie die Hardwaresicherheit auf Greengrass-Core-Geräten konfigurieren.

  • Generieren Sie private Schlüssel direkt auf dem HSM mit Hilfe des internen Hardware-Zufallszahlengenerators. Dieser Ansatz ist sicherer als der Import eines privaten Schlüssels, den Sie an anderer Stelle generieren, da der private Schlüssel innerhalb des HSM verbleibt.

  • Konfigurieren Sie private Schlüssel so, dass sie unveränderlich sind und den Export verbieten.

  • Verwenden Sie das Bereitstellungstool, das der HSM-Hardwareanbieter empfiehlt, eine Zertifikatsignierungsanforderung (CSR) mit dem hardwaregeschützten privaten Schlüssel zu generieren, und verwenden Sie dann die AWS IoTKonsole oder API, um ein Clientzertifikat zu generieren.

Anmerkung

Die bewährte Sicherheitsmethode zum Rotieren von Schlüsseln gilt nicht, wenn Sie private Schlüssel auf einem HSM generieren.

Installieren der -AWS IoT GreengrassCore-Software mit Hardwaresicherheit

Wenn Sie die AWS IoT Greengrass Core-Software installieren, können Sie sie so konfigurieren, dass sie einen privaten Schlüssel verwendet, den Sie in einem HSM generieren. Dieser Ansatz folgt der bewährten Sicherheitsmethode, um den privaten Schlüssel im HSM zu generieren, sodass der private Schlüssel innerhalb des HSM verbleibt.

Gehen Sie wie folgt vor, um die -AWS IoT GreengrassCore-Software mit Hardwaresicherheit zu installieren:

  1. Generieren Sie einen privaten Schlüssel im HSM.

  2. Erstellen Sie eine Zertifikatsignierungsanforderung (CSR) aus dem privaten Schlüssel.

  3. Erstellen Sie ein Zertifikat aus der CSR. Sie können ein Zertifikat erstellen, das von AWS IoT oder einer anderen Stammzertifizierungsstelle (CA) signiert wurde. Weitere Informationen zur Verwendung einer anderen Stammzertifizierungsstelle finden Sie unter Erstellen eigener Clientzertifikate im AWS IoT Core -Entwicklerhandbuch.

  4. Laden Sie das AWS IoT Zertifikat herunter und importieren Sie es in das HSM.

  5. Installieren Sie die AWS IoT Greengrass Core-Software aus einer Konfigurationsdatei, die angibt, dass die PKCS#11-Anbieterkomponente sowie der private Schlüssel und das Zertifikat im HSM verwendet werden sollen.

Sie können eine der folgenden Installationsoptionen wählen, um die AWS IoT Greengrass Core-Software mit Hardwaresicherheit zu installieren:

Derzeit unterstützt AWS IoT Greengrass nicht die Installation der -AWS IoT GreengrassCore-Software mit Hardwaresicherheit, wenn Sie mit automatischer Ressourcenbereitstellung oder Flottenbereitstellung installieren. AWS IoT

Konfigurieren der Hardwaresicherheit auf einem vorhandenen Core-Gerät

Sie können den privaten Schlüssel und das Zertifikat eines Core-Geräts in ein HSM importieren, um die Hardwaresicherheit zu konfigurieren.

Überlegungen
  • Sie müssen Root-Zugriff auf das Dateisystem des Core-Geräts haben.

  • In diesem Verfahren fahren Sie die AWS IoT Greengrass Core-Software herunter, sodass das Core-Gerät offline und nicht verfügbar ist, während Sie die Hardwaresicherheit konfigurieren.

Gehen Sie wie folgt vor, um die Hardwaresicherheit auf einem vorhandenen Core-Gerät zu konfigurieren:

  1. Initialisieren Sie das HSM.

  2. Stellen Sie die PKCS#11-Anbieterkomponente auf dem Core-Gerät bereit.

  3. Halten Sie die AWS IoT Greengrass Core-Software an.

  4. Importieren Sie den privaten Schlüssel und das Zertifikat des Core-Geräts in das HSM.

  5. Aktualisieren Sie die Konfigurationsdatei der AWS IoT Greengrass Core-Software, um den privaten Schlüssel und das Zertifikat im HSM zu verwenden.

  6. Starten Sie die -AWS IoT GreengrassCore-Software.

Schritt 1: Initialisieren des Hardware-Sicherheitsmoduls

Führen Sie den folgenden Schritt aus, um das HSM auf Ihrem Core-Gerät zu initialisieren.

So initialisieren Sie das Hardware-Sicherheitsmodul
  • Initialisieren Sie ein PKCS#11-Token im HSM und speichern Sie die Slot-ID und die Benutzer-PIN für das Token. In der Dokumentation zu Ihrem HSM erfahren Sie, wie Sie ein Token initialisieren. Sie verwenden die Slot-ID und die Benutzer-PIN später, wenn Sie die PKCS#11-Anbieterkomponente bereitstellen und konfigurieren.

Schritt 2: Bereitstellen der PKCS#11-Anbieterkomponente

Führen Sie die folgenden Schritte aus, um die PKCS#11-Anbieterkomponente bereitzustellen und zu konfigurieren. Sie können die Komponente auf einem oder mehreren -Core-Geräten bereitstellen.

  1. Wählen Sie im Navigationsmenü der AWS IoT GreengrassKonsole Komponenten aus.

  2. Wählen Sie auf der Seite Komponenten die Registerkarte Öffentliche Komponenten und dann ausaws.greengrass.crypto.Pkcs11Provider.

  3. Wählen Sie auf der aws.greengrass.crypto.Pkcs11Provider Seite Bereitstellen aus.

  4. Wählen Sie unter Zu Bereitstellung hinzufügen eine vorhandene Bereitstellung aus, die Sie überarbeiten möchten, oder wählen Sie aus, um eine neue Bereitstellung zu erstellen, und wählen Sie dann Weiter aus.

  5. Wenn Sie eine neue Bereitstellung erstellen möchten, wählen Sie das Ziel-Core-Gerät oder die Objektgruppe für die Bereitstellung aus. Wählen Sie auf der Seite Ziel angeben unter Bereitstellungsziel ein Core-Gerät oder eine Objektgruppe und dann Weiter aus.

  6. Wählen Sie auf der Seite Komponenten auswählen unter Öffentliche Komponenten die Option aws.greengrass.crypto.Pkcs11Providerund dann Weiter aus.

  7. Wählen Sie auf der Seite Komponenten konfigurieren die Option aus aws.greengrass.crypto.Pkcs11Providerund gehen Sie dann wie folgt vor:

    1. Wählen Sie Komponente konfigurieren aus.

    2. Geben Sie im Modal Konfigurieren aws.greengrass.crypto.Pkcs11Provider unter Konfigurationsaktualisierung unter Konfiguration zum Zusammenführen von das folgende Konfigurationsupdate ein. Aktualisieren Sie die folgenden Konfigurationsparameter mit Werten für die Ziel-Core-Geräte. Geben Sie die Slot-ID und die Benutzer-PIN an, in der Sie das PKCS#11-Token zuvor initialisiert haben. Sie importieren den privaten Schlüssel und das Zertifikat später in diesen Slot im HSM.

      name

      Ein Name für die PKCS#11-Konfiguration.

      library

      Der absolute Dateipfad zur Bibliothek der PKCS#11-Implementierung, die die AWS IoT Greengrass Core-Software mit libdl laden kann.

      slot

      Die ID des Slots, der den privaten Schlüssel und das Gerätezertifikat enthält. Dieser Wert unterscheidet sich vom Slot-Index oder der Slot-Bezeichnung.

      userPin

      Die Benutzer-PIN, die für den Zugriff auf den Slot verwendet werden soll.

      { "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
    3. Wählen Sie Bestätigen, um das Modal zu schließen, und wählen Sie dann Weiter aus.

  8. Behalten Sie auf der Seite Erweiterte Einstellungen konfigurieren die Standardkonfigurationseinstellungen bei und wählen Sie Weiter.

  9. Wählen Sie auf der Seite Review (Prüfen) die Option Deploy (Bereitstellen) aus.

    Die Bereitstellung kann bis zu einer Minute dauern.

Um die PKCS#11-Anbieterkomponente bereitzustellen, erstellen Sie ein Bereitstellungsdokument, das aws.greengrass.crypto.Pkcs11Provider im -componentsObjekt enthält, und geben Sie das Konfigurationsupdate für die Komponente an. Folgen Sie den Anweisungen unter Erstellen von Bereitstellungen, um eine neue Bereitstellung zu erstellen oder eine vorhandene Bereitstellung zu überarbeiten.

Das folgende Beispiel für ein partielles Bereitstellungsdokument gibt an, die PKCS#11-Anbieterkomponente bereitzustellen und zu konfigurieren. Aktualisieren Sie die folgenden Konfigurationsparameter mit Werten für die Ziel-Core-Geräte. Speichern Sie die Slot-ID und die Benutzer-PIN, die Sie später beim Importieren des privaten Schlüssels und Zertifikats in das HSM verwenden können.

name

Ein Name für die PKCS#11-Konfiguration.

library

Der absolute Dateipfad zur Bibliothek der PKCS#11-Implementierung, die die AWS IoT Greengrass Core-Software mit libdl laden kann.

slot

Die ID des Slots, der den privaten Schlüssel und das Gerätezertifikat enthält. Dieser Wert unterscheidet sich vom Slot-Index oder der Slot-Bezeichnung.

userPin

Die Benutzer-PIN, die für den Zugriff auf den Slot verwendet werden soll.

{ "name": "softhsm_pkcs11", "library": "/usr/lib/softhsm/libsofthsm2.so", "slot": 1, "userPin": "1234" }
{ ..., "components": { ..., "aws.greengrass.crypto.Pkcs11Provider": { "componentVersion": "2.0.0", "configurationUpdate": { "merge": "{\"name\":\"softhsm_pkcs11\",\"library\":\"/usr/lib/softhsm/libsofthsm2.so\",\"slot\":1,\"userPin\":\"1234\"}" } } } }

Es kann einige Minuten dauern, bis die Bereitstellung abgeschlossen ist. Sie können den AWS IoT Greengrass Service verwenden, um den Status der Bereitstellung zu überprüfen. Sie können die AWS IoT Greengrass -Core-Softwareprotokolle überprüfen, um sicherzustellen, dass die PKCS#11-Anbieterkomponente erfolgreich bereitgestellt wurde. Weitere Informationen finden Sie hier:

Wenn die Bereitstellung fehlschlägt, können Sie die Bereitstellung auf jedem Core-Gerät beheben. Weitere Informationen finden Sie unter Problembehebung AWS IoT Greengrass V2.

Schritt 3: Aktualisieren der Konfiguration auf dem Core-Gerät

Die -AWS IoT GreengrassCore-Software verwendet eine Konfigurationsdatei, die angibt, wie das Gerät funktioniert. Diese Konfigurationsdatei enthält, wo Sie den privaten Schlüssel und das Zertifikat finden, die das Gerät zum Herstellen einer Verbindung mit dem verwendetAWS Cloud. Führen Sie die folgenden Schritte aus, um den privaten Schlüssel und das Zertifikat des Core-Geräts in das HSM zu importieren und die Konfigurationsdatei für die Verwendung des HSM zu aktualisieren.

So aktualisieren Sie die Konfiguration auf dem Core-Gerät, um die Hardwaresicherheit zu verwenden
  1. Halten Sie die AWS IoT Greengrass Core-Software an. Wenn Sie die AWS IoT Greengrass Core-Software als Systemservice mit systemd konfiguriert haben, können Sie den folgenden Befehl ausführen, um die Software zu beenden.

    sudo systemctl stop greengrass.service
  2. Suchen Sie den privaten Schlüssel und die Zertifikatsdateien des Core-Geräts.

    • Wenn Sie die -AWS IoT GreengrassCore-Software mit automatischer Bereitstellung oder Flottenbereitstellung installiert haben, existiert der private Schlüssel unter /greengrass/v2/privKey.keyund das Zertifikat existiert unter /greengrass/v2/thingCert.crt.

    • Wenn Sie die -AWS IoT GreengrassCore-Software mit manueller Bereitstellung installiert haben, ist der private Schlüssel /greengrass/v2/private.pem.key standardmäßig bei vorhanden und das Zertifikat ist /greengrass/v2/device.pem.crt standardmäßig bei vorhanden.

    Sie können auch die system.certificateFilePath Eigenschaften system.privateKeyPath und in überprüfen/greengrass/v2/config/effectiveConfig.yaml, um den Speicherort dieser Dateien zu finden.

  3. Importieren Sie den privaten Schlüssel und das Zertifikat in das HSM. In der Dokumentation für Ihr HSM erfahren Sie, wie Sie private Schlüssel und Zertifikate in dieses importieren. Importieren Sie den privaten Schlüssel und das Zertifikat mit der Slot-ID und der Benutzer-PIN, in der Sie das PKCS#11-Token zuvor initialisiert haben. Sie müssen dieselbe Objektbezeichnung und Objekt-ID für den privaten Schlüssel und das Zertifikat verwenden. Speichern Sie die Objektbezeichnung, die Sie beim Importieren jeder Datei angeben. Sie verwenden diese Bezeichnung später, wenn Sie die AWS IoT Greengrass Core-Softwarekonfiguration aktualisieren, um den privaten Schlüssel und das Zertifikat im HSM zu verwenden.

  4. Aktualisieren Sie die AWS IoT Greengrass Core-Konfiguration, um den privaten Schlüssel und das Zertifikat im HSM zu verwenden. Um die Konfiguration zu aktualisieren, ändern Sie die AWS IoT Greengrass Core-Konfigurationsdatei und führen die AWS IoT Greengrass Core-Software mit der aktualisierten Konfigurationsdatei aus, um die neue Konfiguration anzuwenden.

    Gehen Sie wie folgt vor:

    1. Erstellen Sie eine Sicherung der AWS IoT Greengrass Core-Konfigurationsdatei. Sie können diese Sicherung verwenden, um das Core-Gerät wiederherzustellen, wenn bei der Konfiguration der Hardwaresicherheit Probleme auftreten.

      sudo cp /greengrass/v2/config/effectiveConfig.yaml ~/ggc-config-backup.yaml
    2. Öffnen Sie die AWS IoT Greengrass Core-Konfigurationsdatei in einem Texteditor. Sie können beispielsweise den folgenden Befehl ausführen, um die Datei mit GNU Nano zu bearbeiten. Ersetzen Sie /greengrass/v2 durch den Pfad zum Greengrass-Stammordner.

      sudo nano /greengrass/v2/config/effectiveConfig.yaml
    3. Ersetzen Sie den Wert von system.privateKeyPath durch den PKCS#11-URI für den privaten Schlüssel im HSM. Ersetzen Sie iotdevicekey durch die Objektbezeichnung, in die Sie den privaten Schlüssel und das Zertifikat zuvor importiert haben.

      pkcs11:object=iotdevicekey;type=private
    4. Ersetzen Sie den Wert von system.certificateFilePath durch den PKCS#11-URI für das Zertifikat im HSM. Ersetzen Sie iotdevicekey durch die Objektbezeichnung, in die Sie den privaten Schlüssel und das Zertifikat zuvor importiert haben.

      pkcs11:object=iotdevicekey;type=cert

    Nachdem Sie diese Schritte abgeschlossen haben, sollte die -systemEigenschaft in der AWS IoT Greengrass Core-Konfigurationsdatei dem folgenden Beispiel ähneln.

    system: certificateFilePath: "pkcs11:object=iotdevicekey;type=cert" privateKeyPath: "pkcs11:object=iotdevicekey;type=private" rootCaPath: "/greengrass/v2/rootCA.pem" rootpath: "/greengrass/v2" thingName: "MyGreengrassCore"
  5. Wenden Sie die Konfiguration in der aktualisierten effectiveConfig.yaml Datei an. Führen Sie Greengrass.jar mit dem --init-config Parameter aus, um die Konfiguration in anzuwendeneffectiveConfig.yaml. Ersetzen Sie /greengrass/v2 durch den Pfad zum Greengrass-Stammordner.

    sudo java -Droot="/greengrass/v2" \ -jar /greengrass/v2/alts/current/distro/lib/Greengrass.jar \ --start false \ --init-config /greengrass/v2/config/effectiveConfig.yaml
  6. Starten Sie die -AWS IoT GreengrassCore-Software. Wenn Sie die AWS IoT Greengrass Core-Software als Systemservice mit systemd konfiguriert haben, können Sie den folgenden Befehl ausführen, um die Software zu starten.

    sudo systemctl start greengrass.service

    Weitere Informationen finden Sie unter Ausführen der AWS IoT Greengrass -Core-Software.

  7. Überprüfen Sie die AWS IoT Greengrass-Core-Softwareprotokolle, um zu überprüfen, ob die Software gestartet wird und eine Verbindung mit der herstelltAWS Cloud. Die AWS IoT Greengrass -Core-Software verwendet den privaten Schlüssel und das Zertifikat, um eine Verbindung zu den - AWS IoT und -AWS IoT GreengrassServices herzustellen.

    sudo tail -f /greengrass/v2/logs/greengrass.log

    Die folgenden Protokollmeldungen auf INFO-Ebene zeigen an, dass die -AWS IoT GreengrassCore-Software erfolgreich eine Verbindung zu den - AWS IoT und -AWS IoT GreengrassServices herstellt.

    2021-12-06T22:47:53.702Z [INFO] (Thread-3) com.aws.greengrass.mqttclient.AwsIotMqttClient: Successfully connected to AWS IoT Core. {clientId=MyGreengrassCore5, sessionPresent=false}
  8. (Optional) Nachdem Sie überprüft haben, ob die AWS IoT Greengrass -Core-Software mit dem privaten Schlüssel und dem Zertifikat im HSM funktioniert, löschen Sie den privaten Schlüssel und die Zertifikatsdateien aus dem Dateisystem des Geräts. Führen Sie den folgenden Befehl aus und ersetzen Sie die Dateipfade durch die Pfade zum privaten Schlüssel und zu den Zertifikatsdateien.

    sudo rm /greengrass/v2/privKey.key sudo rm /greengrass/v2/thingCert.crt

Hardware ohne PKCS#11-Unterstützung verwenden

Die PKCS#11-Bibliothek wird typischerweise vom Hardwarehersteller bereitgestellt oder ist Open Source. So ist es beispielsweise bei standardkonformer Hardware (z. B. TPM1.2) möglich, vorhandene Open-Source-Software zu nutzen. Wenn Ihre Hardware jedoch nicht über eine entsprechende PKCS#11-Bibliotheksimplementierung verfügt oder Sie einen benutzerdefinierten PKCS#11-Anbieter schreiben möchten, wenden Sie sich bei Fragen zur Integration an Ihren Amazon Web Services Enterprise Support-Mitarbeiter.

Weitere Informationen finden Sie auch unter