

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)
<a name="gg-lite-with-tpm-tutorial"></a>

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 unter[Sicherheit in AWS IoT Greengrass](security.md).

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

Zum Durcharbeiten dieses Tutorials ist Folgendes erforderlich:
+ Ein Linux-compatible 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 [ Linux TPM2 Software Stack unterstützen kann, ](https://tpm2-software.github.io/) kann diesen Mechanismus unterstützen.
+ Ein Entwicklercomputer, [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 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
<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](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/enable-nitrotpm-support-on-ami.html)

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

## Schritt 2: Installieren und konfigurieren Sie die TPM-Tools
<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: Konfigurieren Sie den OpenSSL TPM2-Anbieter
<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. Den richtigen Pfad finden Sie mit:

   ```
   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 Anfrage zur Zertifikatsignierung (CSR)
<a name="lite-tpm-step5"></a>

In diesem Schritt verwenden Sie den TPM2-protected 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 Dingnamen.

## Schritt 6: Erstellen Sie das Zertifikat von 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 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
<a name="lite-tpm-step7"></a>

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

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 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.crt` in das Verzeichnis mit den Anmeldeinformationen.

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

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

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

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

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

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:

1. Stellen Sie sicher, dass Sie einen NitroTPM-supported Instanztyp verwenden.

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

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

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 abgemeldet und nach dem Hinzufügen zur `tss` Gruppe wieder angemeldet haben.

**Probleme mit dem OpenSSL-Anbieter**

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 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 unter[Sicherheit in AWS IoT Greengrass](security.md).