

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: Schützen Sie AWS IoT Greengrass Nucleus Lite mit Trusted Platform Module (TPM)
<a name="gg-lite-with-tpm-tutorial"></a>

In diesem Tutorial wird erklärt, wie Sie die TPM-Unterstützung (Trusted Platform Module) für AWS IoT Greengrass Nucleus Lite aktivieren und konfigurieren. TPM bietet eine hardwarebasierte Vertrauensbasis für die sichere Speicherung von Schlüsseln. 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 Kerngerät TPM-geschützte private Schlüssel für seine Identität und Kommunikation mit Diensten. AWS IoT 

Weitere Informationen zur Sicherheit von AWS IoT Greengrass Geräten finden Sie unter. [Sicherheit in AWS IoT Greengrass](security.md)

## Voraussetzungen
<a name="lite-tpm-prerequisites"></a>

Zum Durcharbeiten dieses Tutorials ist Folgendes erforderlich:
+ [Ein Linux-kompatibles Gerät mit TPM 2.0-Hardware oder NitroTPM](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitrotpm.html)
+ Ein Entwicklercomputer, auf dem Greengrass Nucleus Lite installiert ist. Weitere Informationen finden [Sie unter Installieren der AWS IoT Greengrass Core-Software (Konsole)](https://docs.aws.amazon.com//greengrass/v2/developerguide/install-greengrass-v2-console.html).
+ Die Anweisungen in diesem Tutorial sind für Ubuntu 24.04 LTS definiert.
+ Jede Linux-Distribution, die den [ TPM2 Linux-Software-Stack](https://tpm2-software.github.io/) unterstützen kann, kann diesen Mechanismus unterstützen.
+ Ein Entwicklercomputer, der [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)installiert und konfiguriert ist und über folgende Berechtigungen verfügt:
  +  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 Hardware-Sicherheitsmodul (HSM) zur Erstellung eines privaten Schlüssels und einer CSR, mit der AWS IoT das Ding-Zertifikat erstellt wird.

## Schritt 1: Richten Sie eine NitroTPM-Instanz ein
<a name="lite-tpm-step1"></a>

1. 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)

1. Starten Sie die letzte Instance mit dem benutzerdefinierten AMI, das im vorherigen Schritt erstellt wurde.
**Wichtig**  
Wenn Sie eine Verbindung mit SSH herstellen, verwenden Sie den `ubuntu` Benutzer anstelle von`root`.

1. Ü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 `/dev/tpmrm0` Geräte sehen`/dev/tpm0`.

## Schritt 2: TPM-Tools installieren und konfigurieren
<a name="lite-tpm-step2"></a>

1. 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
   ```

1. Ü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: Den OpenSSL-Anbieter TPM2 konfigurieren
<a name="lite-tpm-step3"></a>

1. Bearbeiten Sie die OpenSSL-Konfigurationsdatei:

   ```
   sudo vi /etc/ssl/openssl.cnf
   ```

1. 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
   ```

1. Passen Sie den Modulpfad nach Bedarf an. Sie können den richtigen Pfad finden, indem Sie:

   ```
   find /usr -name "tpm2.so"
   ```

## Schritt 4: Generieren Sie persistente TPM-Schlüssel
<a name="lite-tpm-step4"></a>

1. Erstellen Sie einen Primärschlüssel, indem Sie den folgenden Befehl ausführen:

   ```
   sudo tpm2_createprimary -C o -c primary.ctx
   ```

1. 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
   ```

1. 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
   ```

1. Machen Sie den Schlüssel persistent, indem Sie den folgenden Befehl ausführen:

   ```
   sudo tpm2_evictcontrol -C o -c device.ctx 0x81000002
   ```

   Dadurch wird ein persistenter Schlüssel mit dem Handle (like`0x81000002`) erstellt.

## Schritt 5: Generieren Sie eine Zertifikatssignieranforderung (CSR)
<a name="lite-tpm-step5"></a>

In diesem Schritt verwenden Sie den TPM2 -geschützten privaten Schlüssel, um eine Certificate Signing Request (CSR) zu generieren.

1. Generieren Sie eine CSR mithilfe des TPM-Schlüssels:

   ```
   openssl req -new -provider tpm2 -key "handle:0x81000002" \
       -out device.csr \
       -subj "/CN=TPMThing"
   ```

1. `0x81000002`Ersetzen Sie es durch den von Ihnen gewählten Handle-Wert und `TPMThing` durch den gewünschten Ding-Namen.

## Schritt 6: Erstellen Sie das Zertifikat aus CSR
<a name="lite-tpm-step6"></a>

1. Erstellen Sie auf Ihrem Entwicklungscomputer einen Ordner, in den Sie das Zertifikat für das AWS IoT Ding heruntergeladen haben.

   ```
   mkdir greengrass-v2-certs
   ```

1. 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.crt
   ```

   Wenn die Anfrage erfolgreich ist, sieht die Antwort dem folgenden Beispiel ähnlich:

   ```
   {
   "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: Greengrass Nucleus Lite mit TPM-Unterstützung einrichten
<a name="lite-tpm-step7"></a>

Um die TPM-Unterstützung in Greengrass Nucleus Lite zu aktivieren, nehmen Sie die folgenden Änderungen vor:

1. Konfigurieren Sie Benutzerberechtigungen, indem Sie den `ggcore` Benutzer der `tss` Gruppe für den TPM-Zugriff hinzufügen:

   ```
   sudo usermod -a -G tss ggcore
   ```

1. Aktualisieren Sie das Verzeichnis mit den Anmeldeinformationen, indem Sie die folgenden Schritte ausführen:
   + Entfernen Sie die Datei mit dem privaten Schlüssel aus dem Verzeichnis mit den Anmeldeinformationen.
     + Da wir persistente TPM-Schlüssel verwenden, muss keine private Schlüsseldatei kopiert werden.
   + Kopieren Sie die neue Datei `device.pem.crt` in das Verzeichnis mit den Anmeldeinformationen.

1. Bearbeiten Sie `config.yaml` mit der folgenden TPM-spezifischen Konfiguration:

   ```
   system:
       privateKeyPath: "handle:0x81000002" # Use your chosen handle
       certificateFilePath: "" # Replace with the path of device.pem.crt
       ...
   ```

1. Starten Sie Ihren Greengrass Nucleus Lite neu, indem Sie den folgenden Befehl ausführen:

   ```
   systemctl restart greengrass-lite.target
   ```

## Fehlerbehebung
<a name="lite-tpm-troubleshooting"></a>

Falls bei der Einrichtung oder dem Betrieb Ihres TPM2 -fähigen AWS IoT Greengrass Geräts Probleme auftreten, versuchen Sie es mit den folgenden Schritten zur Problembehebung:

**Das TPM-Gerät wurde nicht gefunden (bei Verwendung von NitroTPM)**

Wenn `/dev/tpm0` es nicht vorhanden ist, führen Sie die folgenden Schritte aus:

1. Stellen Sie sicher, dass Sie einen von NitroTPM unterstützten Instance-Typ verwenden.

1. Stellen Sie sicher, dass das AMI mit erstellt wurde`--tpm-support v2.0`.

1. Stellen Sie sicher, dass die Instance über das benutzerdefinierte AMI gestartet wurde.

**Fehler bei abgelehnter Berechtigung**

Gehen Sie wie folgt vor, wenn TPM-Zugriffsfehler auftreten:

1. Stellen Sie sicher, dass der Benutzer in der `tss` Gruppe ist:`groups $USER`.

1. Überprüfen Sie die Berechtigungen des TPM-Geräts mit dem folgenden Befehl:

   ```
   ls -l /dev/tpm*
   ```

1. Stellen Sie sicher, dass Sie sich nach dem Hinzufügen zur `tss` Gruppe ab- und wieder angemeldet haben.

**Probleme mit OpenSSL-Anbietern**

Wenn der TPM-Anbieter nicht gefunden wird, gehen Sie wie folgt vor:

1. Überprüfen Sie `tpm2.so` den Pfad in der`/etc/ssl/openssl.cnf`.

1. Überprüfen Sie die Installation des Anbieters, indem Sie den folgenden Befehl ausführen:

   ```
   openssl list -providers
   ```

1. Stellen Sie sicher, dass das `tpm2-openssl` Paket ordnungsgemäß installiert ist.

## Nächste Schritte
<a name="lite-tpm-next-steps"></a>

Nachdem Sie Ihr AWS IoT Greengrass Kerngerät erfolgreich integriert haben TPM2, 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 von AWS IoT Greengrass Geräten finden Sie unter[Sicherheit in AWS IoT Greengrass](security.md).