AWS IoT Greengrass Version 1 trat am 30. Juni 2023 in die erweiterte Lebensphase ein. Weitere Informationen finden Sie in der AWS IoT Greengrass V1 Wartungsrichtlinie. Nach diesem Datum AWS IoT Greengrass V1 werden keine Updates mehr veröffentlicht, die Funktionen, Verbesserungen, Bugfixes oder Sicherheitspatches bieten. Geräte, die auf laufen, werden AWS IoT Greengrass V1 nicht gestört und funktionieren weiterhin und stellen eine Verbindung zur Cloud her. Wir empfehlen Ihnen dringend, zu migrieren AWS IoT Greengrass Version 2, da dies wichtige neue Funktionen und Unterstützung für zusätzliche Plattformen bietet.
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.
Modul 7: Simulation der Hardware-Sicherheitsintegration
Diese Funktion ist verfügbar fürAWS IoT GreengrassCore v1.7 und höher.
Dieses Modul für Fortgeschrittene zeigt Ihnen, wie Sie ein simuliertes Hardware-Sicherheitsmodul (HSM) für die Verwendung mit einem Greengrass Core konfigurieren. Die Konfiguration verwendet SoftHSM. Dabei handelt es sich um eine reine Software-Implementierung mithilfe der PKCS#11 Application Programming Interface (API). Zweck dieses Moduls ist es, Ihnen die Einrichtung einer Umgebung zu ermöglichen, in der Sie lernen und erste Tests in einer reinen Software-Implementierung der PKCS#11-API durchführen können. Das Modul wird nur für Lern- und Ersttests bereitgestellt, nicht für den produktiven Einsatz jeglicher Art.
Mit dieser Konfiguration können Sie mit einem PKCS#11-kompatiblen Service zum Speichern Ihrer privaten Schlüssel experimentieren. Weitere Informationen über die reine Software-Implementierung finden Sie unter SoftHSM
Wichtig
Dieses Modul ist nur für Experimentierzwecke gedacht. Wir raten dringend davon ab, SoftHSM in einer Produktionsumgebung einzusetzen, da dies ein falsches Gefühl von zusätzlicher Sicherheit vermitteln könnte. Die resultierende Konfiguration bietet jedoch keine tatsächlichen Sicherheitsvorteile. Die in SoftHSM gespeicherten Schlüssel sind nicht sicherer als jede andere Art der Geheimhaltung in der Greengrass-Umgebung.
Dieses Modul soll Ihnen ermöglichen, sich über die PKCS#11-Spezifikation zu informieren und erste Tests Ihrer Software durchzuführen, wenn Sie planen, in Zukunft ein echtes hardwarebasiertes HSM einzusetzen.
Sie müssen Ihre zukünftige Hardware-Implementierung separat und vollständig vor jeder Produktionsnutzung testen, da es Unterschiede zwischen der in SoftHSM bereitgestellten PKCS#11-Implementierung und einer hardwarebasierten Implementierung geben kann.
Wenn Sie beim Onboarding einesunterstütztes Hardware-Sicherheitsmodul, kontaktieren Sie IhreAWSVertreter von Enterprise-Support
Bevor Sie beginnen, führen Sie das Greengrass Device Setup-Skript aus oder stellen Sie sicher, dass Sie Modul 1 und Modul 2 des Lernprogramms „Erste Schritte“ abgeschlossen haben. In diesem Modul gehen wir davon aus, dass Ihr Core bereits bereitgestellt ist und mitAWSaus. Dieses Modul sollte etwa 30 Minuten in Anspruch nehmen.
Installieren der SoftHSM-Software
In diesem Schritt installieren Sie SoftHSM und die pkcs11-Tools, mit denen Sie Ihre SoftHSM-Instance verwalten.
-
In einem Terminal auf IhremAWS IoT GreengrassCore-Gerät, führen Sie den folgenden Befehl aus:
sudo apt-get install softhsm2 libsofthsm2-dev pkcs11-dump
Weitere Informationen zu diesen Paketen finden Sie unter Installieren von softhsm2
, Installieren von libsofthsm2-dev und Installieren von pkcs11-dump . Anmerkung
Wenn bei der Verwendung dieses Befehls auf Ihrem System Probleme auftreten, siehe SoftHSM Version 2
auf GitHub. Diese Seite bietet weitere Installationsinformationen, einschließlich der Anleitung zum Erstellen aus dem Quellcode.
Konfigurieren von SoftHSM
In diesem Schritt konfigurieren Sie SoftHSM
-
Wechseln Sie zum Root-Benutzer.
sudo su
-
Verwenden Sie die Handbuchseite, um den systemweiten
softhsm2.conf
-Speicherort zu suchen. Ein häufiger Speicherort ist/etc/softhsm/softhsm2.conf
, jedoch kann der Speicherort auf einigen Systemen abweichen.man softhsm2.conf
-
Erstellen Sie das Verzeichnis für die softhsm2-Konfigurationsdatei im systemweiten Speicherort. In diesem Beispiel nehmen wir an, der Speicherort lautet
/etc/softhsm/softhsm2.conf
.mkdir -p /etc/softhsm
-
Erstellen Sie das Token-Verzeichnis im Verzeichnis
/greengrass
.Anmerkung
Wenn dieser Schritt übersprungen wird, meldet softhsm2
ERROR: Could not initialize the library
.mkdir -p /greengrass/softhsm2/tokens
-
Konfigurieren Sie das Token-Verzeichnis.
echo "directories.tokendir = /greengrass/softhsm2/tokens" > /etc/softhsm/softhsm2.conf
-
Konfigurieren Sie eine Datei-basierte Backend.
echo "objectstore.backend = file" >> /etc/softhsm/softhsm2.conf
Anmerkung
Diese Konfigurationseinstellungen sind nur für Experimentierzwecke gedacht. Um alle Konfigurationsoptionen anzuzeigen, lesen Sie die Handbuchseite für die Konfigurationsdatei.
man softhsm2.conf
Importieren des privaten Schlüssels in SoftHSM
In diesem Schritt initialisieren Sie das SoftHSM-Token, konvertieren das Format des privaten Schlüssels und importieren dann den privaten Schlüssel.
-
Initialisieren Sie das SoftHSM-Token.
softhsm2-util --init-token --slot 0 --label greengrass --so-pin 12345 --pin 1234
Anmerkung
Geben Sie bei Aufforderung den SO-Pin
12345
und den Benutzer-Pin1234
ein. AWS IoT Greengrass verwendet nicht den SO (Supervisor) Pin, sodass Sie jeden beliebigen Wert verwenden können.Wenn Sie die Fehlermeldung
CKR_SLOT_ID_INVALID: Slot 0 does not exist
erhalten, versuchen Sie es stattdessen mit dem folgenden Befehl:softhsm2-util --init-token --free --label greengrass --so-pin 12345 --pin 1234
-
Konvertieren Sie den privaten Schlüssel in ein Format, das vom SoftHSM-Import-Tool verwendet werden kann. Für dieses Tutorial konvertieren Sie den privaten Schlüssel, den Sie von der Option Default Group creation (Standard-Gruppenerstellung) in Modul 2 des Tutorials „Erste Schritte“ erhalten haben.
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in
hash
.private.key -outhash
.private.pem -
Importieren Sie den privaten Schlüssel in SoftHSM. Führen Sie nur einen der folgenden Befehle aus, je nach Ihrer softhsm2-Version.
- Raspbian softhsm2-util v2.2.0-Syntax
-
softhsm2-util --import hash.private.pem --token greengrass --label iotkey --id 0000 --pin 12340
- Ubuntu softhsm2-util v2.0.0-Syntax
-
softhsm2-util --import hash.private.pem --slot 0 --label iotkey --id 0000 --pin 1234
Dieser Befehl identifiziert den Slot als
0
und definiert das Schlüssel-Label alsiotkey
. Sie brauchen diese Werte im nächsten Abschnitt.
Nachdem der private Schlüssel importiert wurde, können Sie ihn optional aus dem Verzeichnis /greengrass/certs
entfernen. Achten Sie darauf, dass sich die Stammzertifikate für CA und Gerät im Verzeichnis befinden.
Konfigurieren des GreengrassCore für die Verwendung von SoftHSM
In diesem Schritt ändern Sie die Greengrass Core-Konfigurationsdatei für die Verwendung von SoftHSM.
Suchen Sie den Pfad zur SoftHSM-Anbieterbibliothek (
libsofthsm2.so
) auf Ihrem System:Holen Sie sich die Liste der installierten Pakete für die Bibliothek.
sudo dpkg -L libsofthsm2
Die Datei
libsofthsm2.so
befindet sich im Verzeichnissofthsm
.Kopieren Sie den vollständigen Pfad in die Datei (z. B.
/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so
). Sie benötigen sie später.
Stoppen Sie den Greengrass-Daemon.
cd /greengrass/ggc/core/ sudo ./greengrassd stop
Öffnen Sie die Greengrass-Konfigurationsdatei. Dies ist die Datei config.json im Verzeichnis
/greengrass/config
.Anmerkung
Die Beispiele in diesem Verfahren sind unter der Annahme verfasst, dass die Datei
config.json
das Format verwendet, das aus der Option Easy Group creation (Einfache Gruppenerstellung) in Modul 2 des Tutorials „Erste Schritte“ erzeugt wird.-
Fügen Sie in das Objekt
crypto.principals
das folgende MQTT Server-Zertifikat-Objekt ein. Fügen Sie bei Bedarf ein Komma hinzu, um eine gültige JSON-Datei zu erstellen."MQTTServerCertificate": { "privateKeyPath": "path-to-private-key" }
-
Fügen Sie in das Objekt
crypto
das folgendePKCS11
-Objekt ein. Fügen Sie bei Bedarf ein Komma hinzu, um eine gültige JSON-Datei zu erstellen."PKCS11": { "P11Provider": "/path-to-pkcs11-provider-so", "slotLabel": "crypto-token-name", "slotUserPin": "crypto-token-user-pin" }
Die Datei sollte wie folgt aussehen:
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "
hash
.cert.pem", "keyPath" : "hash
.private.key", "thingArn" : "arn:partition
:iot:region
:account-id
:thing/core-thing-name
", "iotHost" : "host-prefix
.iot.region
.amazonaws.com", "ggHost" : "greengrass.iot.region
.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto": {"PKCS11": { "P11Provider": "/path-to-pkcs11-provider-so", "slotLabel": "crypto-token-name", "slotUserPin": "crypto-token-user-pin" },
"principals" : {"MQTTServerCertificate": { "privateKeyPath": "path-to-private-key" },
"IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash
.private.key", "certificatePath" : "file:///greengrass/certs/hash
.cert.pem" }, "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash
.private.key" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }Anmerkung
Um zu verwenden over-the-air (OTA) Updates mit Hardwaresicherheit
PKCS11
Objekt muss auch dasOpenSSLEngine
eigentum. Weitere Informationen finden Sie unter Konfigurieren Sie die Unterstützung für Updates over-the-air . -
Bearbeiten Sie das Objekt
crypto
:Konfigurieren Sie das Objekt
PKCS11
.Geben Sie für
P11Provider
den vollständigen Pfad zur Dateilibsofthsm2.so
ein.Geben Sie unter
slotLabel
den Wertgreengrass
ein.Geben Sie unter
slotUserPin
den Wert1234
ein.
Konfigurieren Sie die privaten Schlüsselpfade im Objekt
principals
. Bearbeiten Sie die EigenschaftcertificatePath
nicht.Geben Sie für die Eigenschaften
privateKeyPath
den folgenden RFC 7512 PKCS#11-Pfad ein (der die Bezeichnung des Schlüssels angibt). Machen Sie dies für die Prinzipale vonIoTCertificate
,SecretsManager
undMQTTServerCertificate
.pkcs11:object=iotkey;type=private
-
Prüfen Sie das
crypto
-Objekt. Das sollte bei Ihnen ähnlich wie im folgenden Bild aussehen:"crypto": { "PKCS11": { "P11Provider": "/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so", "slotLabel": "greengrass", "slotUserPin": "1234" }, "principals": { "MQTTServerCertificate": { "privateKeyPath": "pkcs11:object=iotkey;type=private" }, "SecretsManager": { "privateKeyPath": "pkcs11:object=iotkey;type=private" }, "IoTCertificate": { "certificatePath": "file://certs/core.crt", "privateKeyPath": "pkcs11:object=iotkey;type=private" } }, "caPath": "file://certs/root.ca.pem" }
-
Entfernen Sie die Werte für
caPath
,certPath
undkeyPath
aus demcoreThing
-Objekt. Das sollte bei Ihnen ähnlich wie im folgenden Bild aussehen:"coreThing" : { "thingArn" : "arn:
partition
:iot:region
:account-id
:thing/core-thing-name", "iotHost" : "host-prefix
-ats.iot.region
.amazonaws.com", "ggHost" : "greengrass-ats.iot.region
.amazonaws.com", "keepAlive" : 600 }
Anmerkung
Für dieses Tutorial geben Sie für alle Prinzipale den gleichen privaten Schlüssel an. Weitere Informationen zur Auswahl des privaten Schlüssels für den lokalen MQTT-Server finden Sie unter Performance. Weitere Informationen über den Manager lokaler Secrets finden Sie unter Bereitstellen von Secrets für den AWS IoT Greengrass Core.
Testen der Konfiguration
Halten Sie den Greengrass-Daemon an.
cd /greengrass/ggc/core/ sudo ./greengrassd start
Wenn der Daemon erfolgreich startet, dann ist Ihr Core korrekt konfiguriert.
Sie sind nun bereit, die PKCS#11-Spezifikation kennenzulernen und erste Tests mit der PKCS#11-API durchzuführen, die von der SoftHSM-Implementierung bereitgestellt wird.
Wichtig
Auch hier ist es äußerst wichtig zu wissen, dass dieses Modul nur zum Lernen und Testen gedacht ist. Es erhöht nicht wirklich den Sicherheitsstatus Ihrer Greengrass-Umgebung.
Stattdessen soll das Modul Ihnen ermöglichen, mit dem Lernen und Testen zu beginnen, um sich auf den Einsatz eines echten hardwarebasierten HSM in der Zukunft vorzubereiten. Zu diesem Zeitpunkt müssen Sie Ihre Software vor jeder Produktionsnutzung separat und vollständig mit dem hardwarebasierten HSM testen, da es Unterschiede zwischen der in SoftHSM bereitgestellten PKCS#11-Implementierung und einer hardwarebasierten Implementierung geben kann.
Weitere Informationen finden Sie auch unter
-
PKCS #11 Kryptographische Token-Schnittstelle, Bedienungsanleitung Version 2.40. Herausgegeben von John Leiseboer und Robert Griffin. 16. November 2014. OASIS-Ausschuss Anmerkung 02. http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/cn02/pkcs11-ug-v2.40-cn02.html
. Letzte Version: http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/pkcs11-ug-v2.40.html .