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.
Tutorial: Sicher AWS IoT Greengrass Nucleus Lite mit Trusted Platform Module (TPM)
In diesem Tutorial wird erklärt, wie die TPM-Unterstützung (Trusted Platform Module) für AWS IoT Greengrass Nucleus Lite aktiviert und konfiguriert wird. TPM bietet eine hardwarebasierte Vertrauensbasis für die sichere Schlüsselspeicherung. Diese Sicherheitsfunktion schützt kryptografische Operationen und vertrauliche Anmeldeinformationen und verbessert so die Gerätesicherheit und -integrität.
Wenn Sie diese Integration abgeschlossen haben, verwendet Ihr AWS IoT Greengrass Hauptgerät TPM-protected private Schlüssel für seine Identität und Kommunikation mit AWS IoT Diensten.
Weitere Informationen zur Sicherheit auf AWS IoT Greengrass Geräten finden Sie unterSicherheit in AWS IoT Greengrass.
Voraussetzungen
Zum Durcharbeiten dieses Tutorials ist Folgendes erforderlich:
-
Ein Linux-compatible Gerät mit TPM 2.0-Hardware oder NitroTPM
-
Ein Entwicklercomputer, auf dem Greengrass Nucleus Lite installiert ist. Weitere Informationen finden Sie unter Installieren der AWS IoT Greengrass Core-Software (Konsole).
-
Die Anweisungen in diesem Tutorial sind für Ubuntu 24.04 LTS definiert.
-
Jede Linux-Distribution, die den Linux TPM2 Software Stack unterstützen kann,
kann diesen Mechanismus unterstützen. -
Ein Entwicklercomputer, AWS CLI auf dem die folgenden Berechtigungen installiert und konfiguriert sind:
-
AWS IoT Ressourcen erstellen und verwalten
-
Erstellen und verwalten Sie IAM-Rollen und -Richtlinien
-
-
Root- oder Sudo-Rechte auf dem Gerät.
Dieses Tutorial enthält Anweisungen zur Verwendung des TPM2-Chips als Hardwaresicherheitsmodul (HSM), um einen privaten Schlüssel und einen CSR zu erstellen, der zur Erstellung des Ding-Zertifikats verwendet wird. AWS IoT
Schritt 1: Richten Sie eine NitroTPM-Instanz ein
-
Richten Sie eine NitroTPM-Instanz ein. Weitere Informationen finden Sie unter NitroTPM. https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enable-nitrotpm-support-on-ami.html
-
Starten Sie die endgültige Instance mit dem benutzerdefinierten AMI, das im vorherigen Schritt erstellt wurde.
Wichtig
Wenn Sie eine SSH-Verbindung herstellen, verwenden Sie stattdessen den
ubuntuBenutzerroot. -
Überprüfen Sie, ob das TPM-Gerät vorhanden ist und funktioniert, indem Sie den folgenden Befehl ausführen:
ls -la /dev/tpm*Sie sollten zwei
/dev/tpmrm0Geräte sehen/dev/tpm0.
Schritt 2: Installieren und konfigurieren Sie die TPM-Tools
-
Installieren Sie die erforderlichen Pakete, indem Sie den folgenden Befehl ausführen:
sudo apt update sudo apt install tpm2-openssl tpm2-tools tpm2-abrmd libtss2-tcti-tabrmd0 -
Überprüfen Sie die Berechtigungen des TPM-Geräts, indem Sie den folgenden Befehl ausführen:
ls -l /dev/tpm0 # Should be owned by tss:root with permissions 0660 ls -l /dev/tpmrm0 # Should be owned by tss:tss with permissions 0660
Schritt 3: Konfigurieren Sie den OpenSSL TPM2-Anbieter
-
Bearbeiten Sie die OpenSSL-Konfigurationsdatei:
sudo vi /etc/ssl/openssl.cnf -
Fügen Sie die folgende Konfiguration hinzu:
[openssl_init] providers = provider_sect [provider_sect] default = default_sect tpm2 = tpm2_sect [default_sect] activate = 1 [tpm2_sect] identity = tpm2 module = /usr/local/lib64/tpm2.so activate = 1 -
Passen Sie den Modulpfad nach Bedarf an. Den richtigen Pfad finden Sie mit:
find /usr -name "tpm2.so"
Schritt 4: Generieren Sie persistente TPM-Schlüssel
-
Erstellen Sie einen Primärschlüssel, indem Sie den folgenden Befehl ausführen:
sudo tpm2_createprimary -C o -c primary.ctx -
Erstellen Sie ein ECC-Schlüsselobjekt, indem Sie den folgenden Befehl ausführen:
sudo tpm2_create -C primary.ctx -g sha256 -G ecc256 -r device.priv -u device.pub -
Laden Sie den Schlüssel, indem Sie den folgenden Befehl ausführen:
sudo tpm2_load -C primary.ctx -r device.priv -u device.pub -c device.ctx -
Machen Sie den Schlüssel persistent, indem Sie den folgenden Befehl ausführen:
sudo tpm2_evictcontrol -C o -c device.ctx 0x81000002Dadurch wird ein persistenter Schlüssel mit dem Handle (like
0x81000002) erstellt.
Schritt 5: Generieren Sie eine Anfrage zur Zertifikatsignierung (CSR)
In diesem Schritt verwenden Sie den TPM2-protected privaten Schlüssel, um eine Certificate Signing Request (CSR) zu generieren.
-
Generieren Sie eine CSR mithilfe des TPM-Schlüssels:
openssl req -new -provider tpm2 -key "handle:0x81000002" \ -out device.csr \ -subj "/CN=TPMThing" -
0x81000002Ersetzen Sie es durch den von Ihnen gewählten Handle-Wert undTPMThingdurch den gewünschten Dingnamen.
Schritt 6: Erstellen Sie das Zertifikat von CSR
-
Erstellen Sie auf Ihrem Entwicklungscomputer einen Ordner, in den Sie das Zertifikat für das AWS IoT Ding heruntergeladen haben.
mkdir greengrass-v2-certs -
Verwenden Sie die CSR-Datei, um das Zertifikat für das AWS IoT Ding zu erstellen und auf Ihren Entwicklungscomputer herunterzuladen.
aws iot create-certificate-from-csr \ --set-as-active \ --certificate-signing-request file://path_to_device.csr\ --certificate-pem-outfile greengrass-v2-certs/device.pem.crtWenn die Anfrage erfolgreich ist, sieht die Antwort dem folgenden Beispiel ähnlich aus:
{ "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificatePem": "-----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw 3rrszlaEXAMPLE= -----END CERTIFICATE-----" }
Schritt 7: Richten Sie Greengrass Nucleus Lite mit TPM-Unterstützung ein
Nehmen Sie die folgenden Änderungen vor, um die TPM-Unterstützung in Greengrass Nucleus Lite zu aktivieren:
-
Konfigurieren Sie Benutzerberechtigungen, indem Sie den
ggcoreBenutzer dertssGruppe für den TPM-Zugriff hinzufügen:sudo usermod -a -G tss ggcore -
Aktualisieren Sie das Verzeichnis mit den Anmeldeinformationen, indem Sie die folgenden Schritte ausführen:
-
Entfernen Sie die private Schlüsseldatei aus dem Verzeichnis mit den Anmeldeinformationen.
-
Da wir persistente TPM-Schlüssel verwenden, muss keine private Schlüsseldatei kopiert werden.
-
-
Kopieren Sie die neuen Daten
device.pem.crtin das Verzeichnis mit den Anmeldeinformationen.
-
-
Bearbeiten Sie es
config.yamlmit der folgenden TPM-specific Konfiguration:system: privateKeyPath: "handle:0x81000002" # Use your chosen handle certificateFilePath: "" # Replace with the path of device.pem.crt ... -
Starten Sie Ihr Greengrass Nucleus Lite neu, indem Sie den folgenden Befehl ausführen:
systemctl restart greengrass-lite.target
Fehlerbehebung
Wenn bei der Einrichtung oder dem Betrieb Ihres TPM2-enabled AWS IoT Greengrass Geräts Probleme auftreten, versuchen Sie die folgenden Schritte zur Problembehebung:
Das TPM-Gerät wurde nicht gefunden (bei Verwendung von NitroTPM)
Wenn /dev/tpm0 es nicht vorhanden ist, gehen Sie wie folgt vor:
-
Stellen Sie sicher, dass Sie einen NitroTPM-supported Instanztyp verwenden.
-
Stellen Sie sicher, dass das AMI mit erstellt wurde
--tpm-support v2.0. -
Stellen Sie sicher, dass die Instance vom benutzerdefinierten AMI aus gestartet wurde.
Fehler bei abgelehnter Berechtigung
Gehen Sie wie folgt vor, wenn TPM-Zugriffsfehler auftreten:
-
Stellen Sie sicher, dass der Benutzer in der
tssGruppe ist:groups $USER. -
Überprüfen Sie die Berechtigungen des TPM-Geräts mit dem folgenden Befehl:
ls -l /dev/tpm* -
Stellen Sie sicher, dass Sie sich abgemeldet und nach dem Hinzufügen zur
tssGruppe wieder angemeldet haben.
Probleme mit dem OpenSSL-Anbieter
Wenn der TPM-Anbieter nicht gefunden wird, gehen Sie wie folgt vor:
-
Überprüfen Sie
tpm2.soden Pfad in der/etc/ssl/openssl.cnf. -
Überprüfen Sie die Installation des Anbieters, indem Sie den folgenden Befehl ausführen:
openssl list -providers -
Stellen Sie sicher, dass das
tpm2-opensslPaket ordnungsgemäß installiert ist.
Nächste Schritte
Nachdem Sie Ihr AWS IoT Greengrass Hauptgerät erfolgreich in TPM2 integriert haben, können Sie:
-
Komponenten auf Ihrem sicheren AWS IoT Greengrass Gerät bereitstellen
-
Richten Sie zusätzliche AWS IoT Greengrass Geräte mit TPM2-Integration ein
Weitere Informationen zur Sicherheit auf AWS IoT Greengrass Geräten finden Sie unterSicherheit in AWS IoT Greengrass.