

Hinweis zum Ende des Supports: Am 7. Oktober 2026 AWS wird der Support für eingestellt. AWS IoT Greengrass Version 1 Nach dem 7. Oktober 2026 können Sie nicht mehr auf die Ressourcen zugreifen. AWS IoT Greengrass V1 Weitere Informationen finden Sie unter [Migrieren von AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

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
<a name="hardware-security"></a>

Diese Funktion ist für AWS IoT Greengrass Core v1.7 und höher verfügbar.

AWS IoT Greengrass unterstützt die Verwendung von Hardware-Sicherheitsmodulen (HSM) über die [PKCS \$111 -Schnittstelle](#hardware-security-see-also) für die sichere Speicherung und Übertragung von privaten Schlüsseln. Dadurch wird verhindert, dass Schlüssel in der Software freigelegt oder dupliziert werden. Private Schlüssel können sicher auf Hardwaremodulen wie HSMs Trusted Platform Modules (TPM) oder anderen kryptografischen Elementen gespeichert werden.

Suchen Sie im [AWS Partner Gerätekatalog](https://devices.amazonaws.com/search?kw=%22HSI%22&page=1) nach Geräten, die für diese Funktion qualifiziert sind.

Das folgende Diagramm zeigt die Hardware-Sicherheitsarchitektur für einen AWS IoT Greengrass Kern.

![\[AWS IoT Greengrass Core architecture with hardware security and message routing to AWS IoT Core and local devices.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/hardware-security-arch.png)


 AWS IoT Greengrass Verwendet bei einer Standardinstallation zwei private Schlüssel. Ein Schlüssel wird von der AWS IoT Client-Komponente (IoT-Client) während des Transport Layer Security (TLS) -Handshakes verwendet, wenn ein Greengrass-Core eine Verbindung herstellt. AWS IoT Core(Dieser Schlüssel wird auch als privater Kernschlüssel bezeichnet.) Der andere Schlüssel wird vom lokalen MQTT-Server verwendet, wodurch Greengrass-Geräte mit dem Greengrass Core kommunizieren können. Wenn Sie die Hardware-Sicherheit für beide Komponenten verwenden möchten, können Sie einen gemeinsamen privaten Schlüssel oder separate private Schlüssel verwenden. Weitere Informationen finden Sie unter [Bereitstellungspraktiken für AWS IoT Greengrass die Hardwaresicherheit](#optional-provisioning).

**Anmerkung**  
Bei einer Standardinstallation verwendet der lokale Secrets-Manager auch den IoT-Client-Schlüssel für seinen Verschlüsselungsprozess, aber Sie können auch Ihren eigenen privaten Schlüssel verwenden. Es muss ein RSA-Schlüssel mit einer minimalen Länge von 2048 Bit sein. Weitere Informationen finden Sie unter [Angeben des privaten Schlüssels für die Verschlüsselung von Secrets](secrets.md#secrets-config-private-key).

## Voraussetzungen
<a name="hardware-security-reqs"></a>

Bevor Sie die Hardwaresicherheit für einen Greengrass Core konfigurieren können, müssen Sie Folgendes beachten:
+ Ein Hardwaresicherheitsmodul (HSM), das Ihre private Schlüsselkonfiguration für den IoT-Client, den lokalen MQTT-Server und lokale Secrets-Manager-Komponenten unterstützt. Die Konfiguration kann einen, zwei oder drei hardwarebasierte private Schlüssel beinhalten, je nachdem, ob Sie die Komponenten für die Freigabe von Schlüsseln konfigurieren. Weitere Informationen zur Unterstützung von privaten Schlüsseln finden Sie unter [AWS IoT Greengrass zentrale Sicherheitsprinzipale](gg-sec.md#gg-principals).
  + Für RSA-Schlüssel: Eine RSA-Schlüsselgröße von 2048 (oder größer) und ein [PKCS\$11 v1.5](#hardware-security-see-also)-Signaturschema.
  + Für EC-Schlüssel: Eine NIST P-256- oder NIST P-384-Kurve.
**Anmerkung**  
Suchen Sie im [AWS Partner Gerätekatalog](https://devices.amazonaws.com/search?kw=%22HSI%22&page=1) nach Geräten, die für diese Funktion qualifiziert sind.
+ Eine PKCS\$111-Anbieterbibliothek, die zur Laufzeit (mit libdl) geladen werden kann und [PKCS\$111](#hardware-security-see-also)-Funktionen bereitstellt.
+ Das Hardwaremodul muss nach Slot-Label auflösbar sein, wie in der PKCS\$111-Spezifikation definiert.
+ Der private Schlüssel muss mit Hilfe der vom Hersteller bereitgestellten Provisionierungswerkzeuge generiert und auf das HSM geladen werden.
+ Der private Schlüssel muss durch ein Objektlabel auflösbar sein.
+ Das Core-Gerätezertifikat. Dies ist ein IoT-Client-Zertifikat, das dem privaten Schlüssel entspricht.
+ Wenn Sie den Greengrass OTA Update Agent verwenden, muss die [OpenSSL libp11 PKCS \$111](https://github.com/OpenSC/libp11) -Wrapper-Bibliothek installiert sein. Weitere Informationen finden Sie unter [Konfigurieren Sie die Unterstützung für Updates over-the-air](#hardware-security-ota-updates).

Stellen Sie außerdem sicher, dass die folgenden Bedingungen erfüllt sind:
+ Die IoT-Client-Zertifikate, die dem privaten Schlüssel zugeordnet sind, sind registriert AWS IoT und aktiviert. Sie können dies in der AWS IoT Konsole unter **Verwalten** überprüfen, **Alle Geräte** erweitern, **Dinge** auswählen und dann die Registerkarte **Zertifikate** für den Kern auswählen.
+ Die AWS IoT Greengrass Core-Software v1.7 oder höher ist auf dem Core-Gerät installiert, wie in [Modul 2](module2.md) des Tutorials Erste Schritte beschrieben. Version 1.9 oder höher ist erforderlich, um einen EC-Schlüssel für den MQTT-Server zu verwenden.
+ Die Zertifikate sind dem Greengrass Core angefügt. Sie können dies auf der Seite „**Verwalten**“ für den Kern in der AWS IoT Konsole überprüfen.

**Anmerkung**  
Unterstützt derzeit AWS IoT Greengrass nicht das Laden des CA-Zertifikats oder des IoT-Client-Zertifikats direkt aus dem HSM. Die Zertifikate müssen als Klartextdateien an einem Ort im Dateisystem geladen werden, der von Greengrass gelesen werden kann.

## Hardwaresicherheitskonfiguration für einen Kern AWS IoT Greengrass
<a name="configure-hardware-security"></a>

Die Hardware-Sicherheit wird in der Greengrass-Konfigurationsdatei konfiguriert. Dies ist die Datei [`config.json`](gg-core.md#config-json), die sich im Verzeichnis `/greengrass-root/config` befindet.

**Anmerkung**  
Um den Prozess der Einrichtung einer HSM-Konfiguration mit einer reinen Software-Implementierung zu durchlaufen, siehe [Modul 7: Simulation der Hardware-Sicherheitsintegration](console-mod7.md).  
Die simulierte Konfiguration im Beispiel bietet keine Sicherheitsvorteile. Das Beispiel soll Ihnen ermöglichen, sich über die PKCS\$111-Spezifikation zu informieren und erste Tests Ihrer Software durchzuführen, wenn Sie planen, in Zukunft ein hardwarebasiertes HSM einzusetzen.

Um die Hardwaresicherheit in zu konfigurieren AWS IoT Greengrass, bearbeiten Sie das `crypto` Objekt in`config.json`.

Bei der Verwendung von Hardware-Sicherheit wird das Objekt `crypto` eingesetzt, um Pfade zu Zertifikaten, privaten Schlüsseln und Assets für die PKCS\$111-Anbieterbibliothek im Core anzugeben, wie im folgenden Beispiel gezeigt.

```
"crypto": {
  "PKCS11" : {
    "OpenSSLEngine" : "/path-to-p11-openssl-engine",
    "P11Provider" : "/path-to-pkcs11-provider-so",
    "slotLabel" : "crypto-token-name",
    "slotUserPin" : "crypto-token-user-pin"
  },
  "principals" : {
    "IoTCertificate" : {
      "privateKeyPath" : "pkcs11:object=core-private-key-label;type=private",
      "certificatePath" : "file:///path-to-core-device-certificate"
    },
    "MQTTServerCertificate" : {
      "privateKeyPath" : "pkcs11:object=server-private-key-label;type=private"
    },
    "SecretsManager" : {
      "privateKeyPath": "pkcs11:object=core-private-key-label;type=private"
    }
  },    
  "caPath" : "file:///path-to-root-ca"
```

Das `crypto`-Objekt enthält die folgenden Eigenschaften:


| Feld | Description | Hinweise | 
| --- |--- |--- |
| caPath |  Der absolute Pfad zur AWS IoT Stammzertifizierungsstelle.  |  Muss ein Datei-URI im folgenden Format sein: `file:///absolute/path/to/file`.  Stellen Sie sicher, dass Ihre [Endpunkte Ihrem Zertifikatstyp entsprechen](gg-core.md#certificate-endpoints).   | 
| `PKCS11` | 
| --- |
| OpenSSLEngine |  Optional. Der absolute Pfad zur OpenSSL-Engine `.so`-Datei, um die PKCS\$111-Unterstützung unter OpenSSL zu aktivieren.  |  Muss ein Pfad zu einer Datei im Dateisystem sein. Diese Eigenschaft ist erforderlich, wenn Sie den Greengrass OTA Update Agent mit Hardwaresicherheit verwenden. Weitere Informationen finden Sie unter [Konfigurieren Sie die Unterstützung für Updates over-the-air](#hardware-security-ota-updates).  | 
| P11Provider |  Der absolute Pfad zur libdl-ladbaren Bibliothek der PKCS\$111-Implementierung.  |  Muss ein Pfad zu einer Datei im Dateisystem sein.  | 
| slotLabel |  Das Slot-Label, das zur Identifizierung des Hardwaremoduls verwendet wird.  |  Muss den PKCS\$111 Label-Spezifikationen entsprechen.  | 
| slotUserPin |  Die Benutzer-PIN, die zur Authentifizierung des Greengrass-Kerns gegenüber dem Modul verwendet wird.  |  Muss über ausreichende Berechtigungen verfügen, um C\$1Sign mit den konfigurierten privaten Schlüsseln auszuführen.  | 
| `principals` | 
| --- |
| IoTCertificate | Das Zertifikat und der private Schlüssel, die Core verwendet, um Anfragen AWS IoT zu stellen. | 
| IoTCertificate  .privateKeyPath  |  Der Pfad zum privaten Core-Schlüssel.  |  Muss für den Dateisystemspeicher ein Datei-URI im folgenden Format sein: `file:///absolute/path/to/file`. Muss für einen HSM-Speicher ein [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512)-Pfad sein, der eine Objektbezeichnung angibt.  | 
| IoTCertificate  .certificatePath |  Der absolute Pfad zum Core-Gerätezertifikat.  |  Muss ein Datei-URI im folgenden Format sein: `file:///absolute/path/to/file`.  | 
| MQTTServerCertificate |  Optional. Der private Schlüssel, den der Kern in Kombination mit dem Zertifikat verwendet, um als MQTT-Server oder Gateway zu fungieren.  | 
| MQTTServerCertificate  .privateKeyPath |  Der Pfad zum privaten Schlüssel des lokalen MQTT-Servers.  |  Verwenden Sie diesen Wert, um einen eigenen privaten Schlüssel für den lokalen MQTT-Server anzugeben. Muss für den Dateisystemspeicher ein Datei-URI im folgenden Format sein: `file:///absolute/path/to/file`. Muss für einen HSM-Speicher ein [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512)-Pfad sein, der eine Objektbezeichnung angibt. Wenn diese Eigenschaft weggelassen wird, wird der Schlüssel auf der Grundlage Ihrer AWS IoT Greengrass Rotationseinstellungen rotiert. Sofern angegeben, ist der Kunde für das Rotieren des Schlüssels verantwortlich.  | 
| SecretsManager | Der private Schlüssel, der den für die Verschlüsselung verwendeten Datenschlüssel schützt. Weitere Informationen finden Sie unter [Setzen Sie Geheimnisse bis ins AWS IoT Greengrass Mark ein](secrets.md). | 
| SecretsManager  .privateKeyPath |  Der Pfad zum privaten Schlüssel des lokalen Secrets Managers.  |  Nur ein RSA-Schlüssel wird unterstützt. Muss für den Dateisystemspeicher ein Datei-URI im folgenden Format sein: `file:///absolute/path/to/file`. Muss für einen HSM-Speicher ein [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512)-Pfad sein, der eine Objektbezeichnung angibt. Der private Schlüssel muss erstellt werden, indem Sie den [PKCS\$11 v1.5](https://tools.ietf.org/html/rfc2313)-Padding-Mechanismus verwenden.  | 


| Feld | Description | Hinweise | 
| --- |--- |--- |
| caPath |  Der absolute Pfad zur AWS IoT Stammzertifizierungsstelle.  |  Muss ein Datei-URI im folgenden Format sein: `file:///absolute/path/to/file`.  Stellen Sie sicher, dass Ihre [Endpunkte Ihrem Zertifikatstyp entsprechen](gg-core.md#certificate-endpoints).   | 
| `PKCS11` | 
| --- |
| OpenSSLEngine |  Optional. Der absolute Pfad zur OpenSSL-Engine `.so`-Datei, um die PKCS\$111-Unterstützung unter OpenSSL zu aktivieren.  |  Muss ein Pfad zu einer Datei im Dateisystem sein. Diese Eigenschaft ist erforderlich, wenn Sie den Greengrass OTA Update Agent mit Hardwaresicherheit verwenden. Weitere Informationen finden Sie unter [Konfigurieren Sie die Unterstützung für Updates over-the-air](#hardware-security-ota-updates).  | 
| P11Provider |  Der absolute Pfad zur libdl-ladbaren Bibliothek der PKCS\$111-Implementierung.  |  Muss ein Pfad zu einer Datei im Dateisystem sein.  | 
| slotLabel |  Das Slot-Label, das zur Identifizierung des Hardwaremoduls verwendet wird.  |  Muss den PKCS\$111 Label-Spezifikationen entsprechen.  | 
| slotUserPin |  Die Benutzer-PIN, die zur Authentifizierung des Greengrass-Kerns gegenüber dem Modul verwendet wird.  |  Muss über ausreichende Berechtigungen verfügen, um C\$1Sign mit den konfigurierten privaten Schlüsseln auszuführen.  | 
| `principals` | 
| --- |
| IoTCertificate | Das Zertifikat und der private Schlüssel, die Core verwendet, um Anfragen AWS IoT zu stellen. | 
| IoTCertificate  .privateKeyPath  |  Der Pfad zum privaten Core-Schlüssel.  |  Muss für den Dateisystemspeicher ein Datei-URI im folgenden Format sein: `file:///absolute/path/to/file`. Muss für einen HSM-Speicher ein [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512)-Pfad sein, der eine Objektbezeichnung angibt.  | 
| IoTCertificate  .certificatePath |  Der absolute Pfad zum Core-Gerätezertifikat.  |  Muss ein Datei-URI im folgenden Format sein: `file:///absolute/path/to/file`.  | 
| MQTTServerCertificate |  Optional. Der private Schlüssel, den der Kern in Kombination mit dem Zertifikat verwendet, um als MQTT-Server oder Gateway zu fungieren.  | 
| MQTTServerCertificate  .privateKeyPath |  Der Pfad zum privaten Schlüssel des lokalen MQTT-Servers.  |  Verwenden Sie diesen Wert, um einen eigenen privaten Schlüssel für den lokalen MQTT-Server anzugeben. Muss für den Dateisystemspeicher ein Datei-URI im folgenden Format sein: `file:///absolute/path/to/file`. Muss für einen HSM-Speicher ein [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512)-Pfad sein, der eine Objektbezeichnung angibt. Wenn diese Eigenschaft weggelassen wird, wird der Schlüssel auf der Grundlage Ihrer AWS IoT Greengrass Rotationseinstellungen rotiert. Sofern angegeben, ist der Kunde für das Rotieren des Schlüssels verantwortlich.  | 
| SecretsManager | Der private Schlüssel, der den für die Verschlüsselung verwendeten Datenschlüssel schützt. Weitere Informationen finden Sie unter [Setzen Sie Geheimnisse bis ins AWS IoT Greengrass Mark ein](secrets.md). | 
| SecretsManager  .privateKeyPath |  Der Pfad zum privaten Schlüssel des lokalen Secrets Managers.  |  Nur ein RSA-Schlüssel wird unterstützt. Muss für den Dateisystemspeicher ein Datei-URI im folgenden Format sein: `file:///absolute/path/to/file`. Muss für einen HSM-Speicher ein [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512)-Pfad sein, der eine Objektbezeichnung angibt. Der private Schlüssel muss erstellt werden, indem Sie den [PKCS\$11 v1.5](https://tools.ietf.org/html/rfc2313)-Padding-Mechanismus verwenden.  | 


| Feld | Description | Hinweise | 
| --- |--- |--- |
| caPath |  Der absolute Pfad zur AWS IoT Stammzertifizierungsstelle.  |  Muss ein Datei-URI im folgenden Format sein: `file:///absolute/path/to/file`.  Stellen Sie sicher, dass Ihre [Endpunkte Ihrem Zertifikatstyp entsprechen](gg-core.md#certificate-endpoints).   | 
| `PKCS11` | 
| --- |
| OpenSSLEngine |  Optional. Der absolute Pfad zur OpenSSL-Engine `.so`-Datei, um die PKCS\$111-Unterstützung unter OpenSSL zu aktivieren.  |  Muss ein Pfad zu einer Datei im Dateisystem sein. Diese Eigenschaft ist erforderlich, wenn Sie den Greengrass OTA Update Agent mit Hardwaresicherheit verwenden. Weitere Informationen finden Sie unter [Konfigurieren Sie die Unterstützung für Updates over-the-air](#hardware-security-ota-updates).  | 
| P11Provider |  Der absolute Pfad zur libdl-ladbaren Bibliothek der PKCS\$111-Implementierung.  |  Muss ein Pfad zu einer Datei im Dateisystem sein.  | 
| slotLabel |  Das Slot-Label, das zur Identifizierung des Hardwaremoduls verwendet wird.  |  Muss den PKCS\$111 Label-Spezifikationen entsprechen.  | 
| slotUserPin |  Die Benutzer-PIN, die zur Authentifizierung des Greengrass-Kerns gegenüber dem Modul verwendet wird.  |  Muss über ausreichende Berechtigungen verfügen, um C\$1Sign mit den konfigurierten privaten Schlüsseln auszuführen.  | 
| `principals` | 
| --- |
| IoTCertificate | Das Zertifikat und der private Schlüssel, die Core verwendet, um Anfragen AWS IoT zu stellen. | 
| IoTCertificate  .privateKeyPath  |  Der Pfad zum privaten Core-Schlüssel.  |  Muss für den Dateisystemspeicher ein Datei-URI im folgenden Format sein: `file:///absolute/path/to/file`. Muss für einen HSM-Speicher ein [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512)-Pfad sein, der eine Objektbezeichnung angibt.  | 
| IoTCertificate  .certificatePath |  Der absolute Pfad zum Core-Gerätezertifikat.  |  Muss ein Datei-URI im folgenden Format sein: `file:///absolute/path/to/file`.  | 
| MQTTServerCertificate |  Optional. Der private Schlüssel, den der Kern in Kombination mit dem Zertifikat verwendet, um als MQTT-Server oder Gateway zu fungieren.  | 
| MQTTServerCertificate  .privateKeyPath |  Der Pfad zum privaten Schlüssel des lokalen MQTT-Servers.  |  Verwenden Sie diesen Wert, um einen eigenen privaten Schlüssel für den lokalen MQTT-Server anzugeben. Muss für den Dateisystemspeicher ein Datei-URI im folgenden Format sein: `file:///absolute/path/to/file`. Muss für einen HSM-Speicher ein [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512)-Pfad sein, der eine Objektbezeichnung angibt. Wenn diese Eigenschaft weggelassen wird, wird der Schlüssel auf der Grundlage Ihrer AWS IoT Greengrass Rotationseinstellungen rotiert. Sofern angegeben, ist der Kunde für das Rotieren des Schlüssels verantwortlich.  | 
| SecretsManager | Der private Schlüssel, der den für die Verschlüsselung verwendeten Datenschlüssel schützt. Weitere Informationen finden Sie unter [Setzen Sie Geheimnisse bis ins AWS IoT Greengrass Mark ein](secrets.md). | 
| SecretsManager  .privateKeyPath |  Der Pfad zum privaten Schlüssel des lokalen Secrets Managers.  |  Nur ein RSA-Schlüssel wird unterstützt. Muss für den Dateisystemspeicher ein Datei-URI im folgenden Format sein: `file:///absolute/path/to/file`. Muss für einen HSM-Speicher ein [RFC 7512 PKCS\$111](https://tools.ietf.org/html/rfc7512)-Pfad sein, der eine Objektbezeichnung angibt. Der private Schlüssel muss erstellt werden, indem Sie den [PKCS\$11 v1.5](https://tools.ietf.org/html/rfc2313)-Padding-Mechanismus verwenden.  | 

## Bereitstellungspraktiken für AWS IoT Greengrass die Hardwaresicherheit
<a name="optional-provisioning"></a>

Im Folgenden werden die sicherheits- und leistungsbezogenen Bereitstellungspraktiken beschrieben.

**Sicherheit**  
  
+ Generieren Sie private Schlüssel direkt auf dem HSM mit Hilfe des internen Hardware-Zufallszahlengenerators.
**Anmerkung**  
[Wenn Sie private Schlüssel für die Verwendung mit dieser Funktion konfigurieren (indem Sie die Anweisungen des Hardwareanbieters befolgen), beachten Sie, dass AWS IoT Greengrass derzeit nur der Padding-Mechanismus der Version PKCS1 1.5 für die Verschlüsselung und Entschlüsselung von lokalen Geheimnissen unterstützt wird.](secrets.md) AWS IoT Greengrass unterstützt Optimal Asymmetric Encryption Padding (OAEP) nicht.
+ Konfigurieren Sie private Schlüssel, um den Export zu verhindern.
+ Verwenden Sie das vom Hardwareanbieter bereitgestellte Bereitstellungstool, um mithilfe des hardwaregeschützten privaten Schlüssels eine Zertifikatsignieranforderung (Certificate Signing Request, CSR) zu generieren, und verwenden Sie dann die Konsole, um ein Client-Zertifikat zu generieren. AWS IoT 
Die Praxis des Rotierens von Schlüsseln gilt nicht, wenn private Schlüssel auf einem HSM erzeugt werden.

**Leistung**  <a name="hsm-performance"></a>
Das folgende Diagramm zeigt die IoT-Client-Komponente und den lokalen MQTT-Server auf dem AWS IoT Greengrass Core. Wenn Sie eine HSM-Konfiguration für beide Komponenten verwenden möchten, können Sie den gleichen privaten Schlüssel oder separate private Schlüssel verwenden. Wenn Sie separate Schlüssel verwenden, müssen diese im gleichen Slot gespeichert sein.  
AWS IoT Greengrass schränkt die Anzahl der Schlüssel, die Sie auf dem HSM speichern, nicht ein, sodass Sie private Schlüssel für die Komponenten IoT-Client, MQTT-Server und Secrets Manager speichern können. Einige HSM-Anbieter können jedoch die Anzahl der Schlüssel, die Sie in einem Slot speichern können, begrenzen.

![\[IoT client and MQTT server interacting with AWS IoT Greengrass Core and AWS IoT Core.\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/images/multi-key-diagram.png)

Im Allgemeinen wird der IoT-Clientschlüssel nicht sehr häufig verwendet, da die AWS IoT Greengrass Core-Software langlebige Verbindungen zur Cloud unterhält. Der MQTT-Server-Schlüssel wird jedoch jedes Mal verwendet, wenn sich ein Greengrass-Gerät mit dem Kern verbindet. Diese Interaktionen wirken sich direkt auf die Leistung aus.  
Wenn der MQTT-Server-Schlüssel auf dem HSM gespeichert ist, hängt die Geschwindigkeit, mit der sich Geräte verbinden können, von der Anzahl der RSA-Signaturvorgänge pro Sekunde ab, die das HSM ausführen kann. Wenn das HSM beispielsweise 300 Millisekunden benötigt, um eine RSASSA- PKCS1 -v1.5-Signatur auf einem privaten RSA-2048-Schlüssel durchzuführen, können nur drei Geräte pro Sekunde eine Verbindung zum Greengrass-Core herstellen. Nach dem Herstellen der Verbindungen wird das HSM nicht mehr verwendet, und es gelten die standardmäßigen [Kontingente für AWS IoT Greengrass](https://docs.aws.amazon.com/general/latest/gr/greengrass.html#limits_greengrass).  
Um Leistungsengpässe zu vermeiden, können Sie den privaten Schlüssel für den MQTT-Server auf dem Dateisystem statt auf dem HSM speichern. Bei dieser Konfiguration verhält sich der MQTT-Server so, als ob die Hardware-Sicherheit nicht aktiviert wäre.  
AWS IoT Greengrass unterstützt mehrere Schlüsselspeicherkonfigurationen für die IoT-Client- und MQTT-Serverkomponenten, sodass Sie Ihre Sicherheits- und Leistungsanforderungen optimieren können. Die folgende Tabelle enthält Beispielkonfigurationen.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/greengrass/v1/developerguide/hardware-security.html)
Um den Greengrass-Kern so zu konfigurieren, dass er dateisystembasierte Schlüssel für den MQTT-Server verwendet, lassen Sie den `principals.MQTTServerCertificate` Abschnitt von weg `config.json` (oder geben Sie einen dateibasierten Pfad zum Schlüssel an, wenn Sie nicht den von generierten Standardschlüssel verwenden). AWS IoT Greengrass Das resultierende Objekt `crypto` sieht folgendermaßen aus:  

```
"crypto": {
  "PKCS11": {
    "OpenSSLEngine": "...",
    "P11Provider": "...",
    "slotLabel": "...",
    "slotUserPin": "..."
  },
  "principals": {
    "IoTCertificate": {
      "privateKeyPath": "...",
      "certificatePath": "..."
    },      
    "SecretsManager": {
      "privateKeyPath": "..."
    }
  },    
  "caPath" : "..."
}
```

## Unterstützte Verschlüsselungs-Suiten für die Hardware-Sicherheitsintegration
<a name="cipher-suites-for-hsm"></a>

AWS IoT Greengrass unterstützt eine Reihe von Cipher Suites, wenn der Kern für Hardware-Sicherheit konfiguriert ist. Dies ist eine Teilmenge der Verschlüsselungs-Suiten, die unterstützt werden, wenn der Kern für die Verwendung dateibasierter Sicherheit konfiguriert ist. Weitere Informationen finden Sie unter [Support für TLS-Verschlüsselungs-Suites](gg-sec.md#gg-cipher-suites).

**Anmerkung**  
Wenn Sie sich von Greengrass-Geräten über das lokale Netzwerk mit dem Greengrass-Core verbinden, stellen Sie sicher, dass Sie eine der unterstützten Verschlüsselungs-Suiten verwenden, um die TLS-Verbindung herzustellen.

## Konfigurieren Sie die Unterstützung für Updates over-the-air
<a name="hardware-security-ota-updates"></a>

Um over-the-air (OTA-) Updates der AWS IoT Greengrass Core-Software bei Verwendung von Hardwaresicherheit zu aktivieren, müssen Sie die OpenSC libp11 [PKCS \$111 -Wrapper-Bibliothek](https://github.com/OpenSC/libp11) installieren und die Greengrass-Konfigurationsdatei bearbeiten. Weitere Informationen zu OTA-Updates finden Sie unter [OTA-Updates der AWS IoT Greengrass Core-Software](core-ota-update.md).

1. Stoppen Sie den Greengrass-Daemon.

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd stop
   ```
**Anmerkung**  
*greengrass-root*steht für den Pfad, in dem die AWS IoT Greengrass Core-Software auf Ihrem Gerät installiert ist. Normalerweise ist dies das Verzeichnis `/greengrass`.

1. Installieren der OpenSSL-Engine. OpenSSL 1.0 oder 1.1 werden unterstützt.

   ```
   sudo apt-get install libengine-pkcs11-openssl
   ```

1. Suchen Sie den Pfad zur OpenSSL-Engine (`libpkcs11.so`) auf Ihrem System:

   1. Holen Sie sich die Liste der installierten Pakete für die Bibliothek.

      ```
      sudo dpkg -L libengine-pkcs11-openssl
      ```

      Die Datei `libpkcs11.so` befindet sich im Verzeichnis `engines`.

   1. Kopieren Sie den vollständigen Pfad in die Datei (z. B. `/usr/lib/ssl/engines/libpkcs11.so`).

1. Öffnen Sie die Greengrass-Konfigurationsdatei. Dies ist die Datei [`config.json`](gg-core.md#config-json) im Verzeichnis `/greengrass-root/config`.

1. Geben Sie für die Eigenschaft `OpenSSLEngine` den Pfad zur Datei `libpkcs11.so` ein.

   ```
   {
    "crypto": {
      "caPath" : "file:///path-to-root-ca",
      "PKCS11" : {
        "OpenSSLEngine" : "/path-to-p11-openssl-engine",
        "P11Provider" : "/path-to-pkcs11-provider-so",
        "slotLabel" : "crypto-token-name",
        "slotUserPin" : "crypto-token-user-pin"
       },
       ...
     }
     ...
   }
   ```
**Anmerkung**  
Wenn die Eigenschaft `OpenSSLEngine` im Objekt `PKCS11` nicht vorhanden ist, dann fügen Sie sie hinzu.

1. Halten Sie den Greengrass-Daemon an.

   ```
   cd /greengrass-root/ggc/core/
   sudo ./greengrassd start
   ```

## Abwärtskompatibilität mit früheren Versionen der AWS IoT Greengrass Kernsoftware
<a name="hardware-security-backward-compatibiity"></a>

Die AWS IoT Greengrass Core-Software mit Unterstützung für Hardwaresicherheit ist vollständig abwärtskompatibel mit `config.json` Dateien, die für Version 1.6 und frühere Versionen generiert wurden. Wenn das `crypto` Objekt nicht in der `config.json` Konfigurationsdatei vorhanden ist, werden die dateibasierten Eigenschaften`coreThing.certPath`, `coreThing.keyPath` und AWS IoT Greengrass verwendet. `coreThing.caPath` Diese Abwärtskompatibilität gilt für Greengrass OTA-Updates, die eine dateibasierte Konfiguration, die in `config.json` angegeben ist, nicht überschreiben.

## Hardware ohne PKCS\$111-Unterstützung
<a name="hardware-without-pkcs11"></a>

Die PKCS\$111-Bibliothek wird typischerweise vom Hardwarehersteller bereitgestellt oder ist Open Source. Bei standardkonformer Hardware (wie TPM1 .2) könnte es beispielsweise möglich sein, vorhandene Open-Source-Software zu verwenden. Wenn Ihre Hardware jedoch nicht über eine entsprechende PKCS \$111 -Bibliotheksimplementierung verfügt oder wenn Sie einen benutzerdefinierten PKCS \$111 -Anbieter schreiben möchten, sollten Sie sich mit Fragen zur Integration an Ihren AWS Enterprise Support-Mitarbeiter wenden.

## Weitere Informationen finden Sie auch unter
<a name="hardware-security-see-also"></a>
+ *PKCS \$111 Kryptographische Token-Schnittstelle, Bedienungsanleitung Version 2.40*. Herausgegeben von John Leiseboer und Robert Griffin. 16. November 2014. Anmerkung 02 des OASIS-Ausschusses. [http://docs.oasis-open. org/pkcs11/pkcs11-ug/v2.40/cn02/pkcs11-ug-v2.40-cn02.html](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](http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/pkcs11-ug-v2.40.html).
+ [RFC 7512](https://tools.ietf.org/html/rfc7512)
+ [PKCS \$11: RSA Encryption Version 1.5](https://tools.ietf.org/html/rfc2313)