

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.

# Voraussetzungen für OTA-Updates
<a name="ota-prereqs"></a>

Gehen Sie wie folgt vor, um over-the-air (OTA-) Updates zu verwenden:
+ Überprüfen Sie das [Voraussetzungen für OTA-Updates mit HTTP](ota-http-freertos.md) oder das [Voraussetzungen für OTA-Updates mit MQTT](ota-mqtt-freertos.md).
+ [Erstellen Sie einen Amazon S3 S3-Bucket, um Ihr Update zu speichern](dg-ota-bucket.md).
+ [Erstellen einer OTA-Update-Servicerolle](create-service-role.md).
+ [Erstellen einer OTA-Benutzerrichtlinie](create-ota-user-policy.md).
+ [Erstellen eines Zertifikats für die Codesignierung](ota-code-sign-cert.md).
+ Wenn Sie Code Signing für verwenden AWS IoT,[Gewähren Sie Zugriff auf die Codesignatur für AWS IoT](code-sign-policy.md).
+ [Laden Sie FreeRTOS mit der OTA-Bibliothek herunter](ota-download-freertos.md).

# Erstellen Sie einen Amazon S3 S3-Bucket, um Ihr Update zu speichern
<a name="dg-ota-bucket"></a>

OTA-Aktualisierungsdateien werden in Amazon S3 S3-Buckets gespeichert.

Wenn Sie Code Signing for verwenden, verwendet der Befehl AWS IoT, mit dem Sie einen Codesignaturauftrag erstellen, einen Quell-Bucket (in dem sich das unsignierte Firmware-Image befindet) und einen Ziel-Bucket (in den das signierte Firmware-Image geschrieben wird). Sie können denselben Bucket für die Quelle und das Ziel angeben. Die Dateinamen werden GUIDs so geändert, dass die Originaldateien nicht überschrieben werden.<a name="create-bucket"></a>

**So erstellen Sie einen Amazon-S3-Bucket**

1. Melden Sie sich bei der Amazon S3 S3-Konsole unter an [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Wählen Sie **Create Bucket** (Bucket erstellen) aus.

1. Geben Sie einen **Bucket-Namen** ein.

1. Lassen Sie unter **Bucket-Einstellungen für „Öffentlichen Zugriff** **blockieren“ die Option Gesamten öffentlichen Zugriff** blockieren aktiviert, um die Standardberechtigungen zu akzeptieren.

1. Wählen Sie unter **Bucket-Versionierung** die Option **Aktivieren** aus, um alle Versionen im selben Bucket zu behalten.

1. Wählen Sie **Create Bucket** (Bucket erstellen) aus.

Weitere Informationen zu Amazon S3 finden Sie im [Amazon Simple Storage Service User Guide](https://docs.aws.amazon.com/AmazonS3/latest/userguide/).

# Erstellen einer OTA-Update-Servicerolle
<a name="create-service-role"></a>

Der OTA-Aktualisierungsservice übernimmt diese Rolle, um OTA-Aktualisierungsaufträge in Ihrem Namen zu erstellen und zu verwalten.<a name="create-service-role-steps"></a>

**So erstellen Sie eine OTA-Service-Rolle:**

1. Melden Sie sich an der [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) an.

1. Wählen Sie im Navigationsbereich **Roles (Rollen)** aus.

1. Wählen Sie **Create role** (Rolle erstellen) aus.

1. Wählen Sie unter **Select type of trusted entity** (Typ der vertrauenswürdigen Entität auswählen) die Option **AWS Service** aus.

1. Wählen Sie **IoT** aus der Liste der AWS Dienste aus.

1. Wählen Sie unter **Select your use case (Anwendungsfall auswählen)** **IoT**.

1. Wählen Sie **Next: Permissions** aus.

1. Wählen Sie **Next: Tags (Weiter: Tags)** aus.

1. Klicken Sie auf **Weiter: Prüfen**.

1. Geben Sie einen Rollennamen und eine Beschreibung ein und wählen Sie dann **Create role (Rolle erstellen)** aus.

Weitere Informationen zu IAM-Rollen finden Sie unter [IAM-Rollen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

**Wichtig**  
Um das Sicherheitsproblem „Confused Deputy“ zu lösen, müssen Sie die Anweisungen im [AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/cross-service-confused-deputy-prevention.html)Leitfaden befolgen.<a name="add-ota-permissions"></a>

**So fügen Sie OTA-Update-Berechtigungen zu Ihrer OTA-Service-Rolle hinzu:**

1. Geben Sie in das Suchfeld auf der Seite der IAM-Konsole den Namen Ihrer Rolle ein und wählen Sie sie dann aus der Liste aus.

1. Wählen Sie **Richtlinien anfügen**.

1. Geben Sie in das **Suchfeld** "AmazonFreeRTOSOTAUpdate„ein, wählen Sie **AmazonFreeRTOSOTAUpdate**aus der Liste der gefilterten Richtlinien aus und wählen Sie dann **Richtlinie anhängen** aus, um die Richtlinie an Ihre Servicerolle anzuhängen.<a name="add-iam-permissions"></a>

**Um die erforderlichen IAM-Berechtigungen zu Ihrer OTA-Servicerolle hinzuzufügen**

1. Geben Sie im Suchfeld auf der IAM-Konsolenseite den Namen Ihrer Rolle ein und wählen Sie ihn dann aus der Liste aus.

1. Wählen Sie **Inline-Richtlinie hinzufügen**.

1. Wählen Sie den Tab **JSON**.

1. Kopieren Sie das folgende Richtliniendokument und fügen Sie es in das Textfeld ein:

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "iam:GetRole",
                   "iam:PassRole"
               ],
               "Resource": "arn:aws:iam::111122223333:role/your_role_name"
           }
       ]
   }
   ```

------

   Stellen Sie sicher, dass Sie ihn *your\$1account\$1id* durch Ihre AWS Konto-ID und *your\$1role\$1name* durch den Namen der OTA-Dienstrolle ersetzen.

1. Wählen Sie **Richtlinie prüfen**.

1. Geben Sie einen Namen für die Richtlinie ein und wählen Sie dann **Create policy (Richtlinie erstellen)** aus.

**Anmerkung**  
Das folgende Verfahren ist nicht erforderlich, wenn Ihr Amazon S3 S3-Bucket-Name mit „afr-ota“ beginnt. Ist dies der Fall, enthält die AWS verwaltete Richtlinie `AmazonFreeRTOSOTAUpdate` bereits die erforderlichen Berechtigungen. <a name="add-s3-permissions"></a>

****So fügen Sie Ihrer OTA-Servicerolle die erforderlichen Amazon S3 S3-Berechtigungen hinzu****

1. Geben Sie im Suchfeld auf der IAM-Konsolenseite den Namen Ihrer Rolle ein und wählen Sie sie dann aus der Liste aus.

1. Wählen Sie **Inline-Richtlinie hinzufügen**.

1. Wählen Sie den Tab **JSON**.

1. Kopieren Sie das folgende Richtliniendokument und fügen Sie es in das Feld ein.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "s3:GetObjectVersion",
                   "s3:GetObject",
                   "s3:PutObject"
               ],
               "Resource": [
                   "arn:aws:s3:::example-bucket/*"
               ]
           }
       ]
   }
   ```

------

   Diese Richtlinie gewährt Ihrer OTA-Servicerolle die Berechtigung, Amazon S3 S3-Objekte zu lesen. Stellen Sie sicher, dass Sie es *example-bucket* durch den Namen Ihres Buckets ersetzen.

1. Wählen Sie **Richtlinie prüfen**.

1. Geben Sie einen Namen für die Richtlinie ein und wählen Sie dann **Create policy (Richtlinie erstellen)** aus.

# Erstellen einer OTA-Benutzerrichtlinie
<a name="create-ota-user-policy"></a>

Sie müssen Ihrem Benutzer die Erlaubnis erteilen, over-the-air Updates durchzuführen. Ihr -Benutzer muss über die folgenden Berechtigungen verfügen:
+ Zugriff auf den S3-Bucket, in dem Ihre Firmware-Updates gespeichert sind
+ Zugreifen auf Zertifikate, die in gespeichert sind AWS Certificate Manager.
+ Greifen Sie auf die AWS IoT MQTT-basierte Dateizustellungsfunktion zu.
+ Greifen Sie auf FreeRTOS OTA-Updates zu.
+ Greifen Sie auf Jobs zu AWS IoT .
+ Greifen Sie auf IAM zu.
+ Zugriffscodesignatur für AWS IoT. Siehe [Gewähren Sie Zugriff auf die Codesignatur für AWS IoT](code-sign-policy.md).
+ Listet FreeRTOS-Hardwareplattformen auf.
+ Ressourcen kennzeichnen und deren Markierung aufheben AWS IoT .

Informationen zum Erteilen der erforderlichen Berechtigungen finden Sie unter [IAM-Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html). Weitere Informationen finden Sie unter [Autorisieren von Benutzern und Cloud-Diensten zur Nutzung AWS IoT von Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iam-policy-users-jobs.html).

Um Zugriff zu gewähren, fügen Sie Ihren Benutzern, Gruppen oder Rollen Berechtigungen hinzu:
+ Benutzer und Gruppen in AWS IAM Identity Center:

  Erstellen Sie einen Berechtigungssatz. Befolgen Sie die Anweisungen unter [Erstellen eines Berechtigungssatzes](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) im *AWS IAM Identity Center -Benutzerhandbuch*.
+ Benutzer, die in IAM über einen Identitätsanbieter verwaltet werden:

  Erstellen Sie eine Rolle für den Identitätsverbund. Befolgen Sie die Anleitung unter [Eine Rolle für einen externen Identitätsanbieter (Verbund) erstellen](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) im *IAM-Benutzerhandbuch*.
+ IAM-Benutzer:
  + Erstellen Sie eine Rolle, die Ihr Benutzer annehmen kann. Befolgen Sie die Anleitung unter [Eine Rolle für einen IAM-Benutzer erstellen](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) im *IAM-Benutzerhandbuch*.
  + (Nicht empfohlen) Weisen Sie einem Benutzer eine Richtlinie direkt zu oder fügen Sie einen Benutzer zu einer Benutzergruppe hinzu. Befolgen Sie die Anweisungen unter [Hinzufügen von Berechtigungen zu einem Benutzer (Konsole)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) im *IAM-Benutzerhandbuch*.

# Erstellen eines Zertifikats für die Codesignierung
<a name="ota-code-sign-cert"></a>

Um Firmware-Images digital zu signieren, benötigen Sie ein Codesignierungszertifikat und einen privaten Schlüssel. Zu Testzwecken können Sie ein selbstsigniertes Zertifikat und einen privaten Schlüssel erstellen. Für Produktionsumgebungen sollten Sie ein Zertifikat von einer bekannten Zertifizierungsstelle (CA) erwerben.

Verschiedene Plattformen benötigen unterschiedliche Arten von Codesignierungszertifikaten. In den folgenden Abschnitten wird beschrieben, wie Codesignaturzertifikate für verschiedene FreeRTOS-qualifizierte Plattformen erstellt werden.

**Topics**
+ [

# Erstellen eines Codesignaturzertifikats für den SF-LAUNCHXL von Texas Instruments CC3220
](ota-code-sign-cert-ti.md)
+ [

# Erstellen eines Codesignaturzertifikats für den Espressif ESP32
](ota-code-sign-cert-esp.md)
+ [

# Erstellen eines Zertifikats für die Codesignierung für das Nordic nrf52840-dk
](ota-code-sign-cert-nordic.md)
+ [

# Erstellen eines Codesignaturzertifikats für den FreeRTOS-Windows-Simulator
](ota-code-sign-cert-win.md)
+ [

# Erstellen eines Zertifikats für die Codesignierung für benutzerdefinierte Hardware
](ota-code-sign-cert-other.md)

# Erstellen eines Codesignaturzertifikats für den SF-LAUNCHXL von Texas Instruments CC3220
<a name="ota-code-sign-cert-ti"></a>

**Wichtig**  <a name="deprecation-message"></a>
Diese Referenzintegration wird im Amazon-FreeRTOS-Repository gehostet, das veraltet ist. Wir empfehlen, dass Sie [hier beginnen](freertos-getting-started-modular.md), wenn Sie ein neues Projekt erstellen. Wenn Sie bereits ein vorhandenes FreeRTOS-Projekt haben, das auf dem inzwischen veralteten Amazon-FreeRTOS-Repository basiert, finden Sie weitere Informationen unter. [Leitfaden zur Migration des Amazon-FreerTOS Github-Repositorys](github-repo-migration.md)

Das SimpleLink Wi-Fi CC3220 SF Wireless Microcontroller Launchpad Development Kit unterstützt zwei Zertifikatsketten für die Firmware-Codesignatur:
+ Produktion (certificate-catalog)

  Um die Produktions-Zertifikatskette nutzen zu können, müssen Sie ein kommerzielles Codesignierungszertifikat erwerben und das [TI Uniflash Tool](http://www.ti.com/tool/UNIFLASH) verwenden, um das Board in den Produktionsmodus zu versetzen.
+ Test und Entwicklung (certificate-playground) 

  Die Playground-Zertifikatskette ermöglicht es Ihnen, OTA-Updates mit einem selbstsignierten Codesignaturzertifikat auszuprobieren.

Verwenden Sie das AWS Command Line Interface , um Ihr Codesignaturzertifikat, Ihren privaten Schlüssel und Ihre Zertifikatskette zu importieren. AWS Certificate Manager Weitere Informationen finden Sie unter [Installation von AWS CLI im AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) *Benutzerhandbuch*.

Laden Sie die neueste Version des [SimpleLink CC3220 SDK](http://www.ti.com/tool/download/SIMPLELINK-CC3220-SDK) herunter und installieren Sie sie. Standardmäßig befinden sich die benötigten Dateien an den folgenden Speicherorten:

`C:\ti\simplelink_cc32xx_sdk_version\tools\cc32xx_tools\certificate-playground` (Windows) 

`/Applications/Ti/simplelink_cc32xx_version/tools/cc32xx_tools/certificate-playground` (macOS)

Die Zertifikate im SimpleLink CC3220 SDK sind im DER-Format. Um ein selbstsigniertes Codesignaturzertifikat zu erstellen, müssen Sie es in das PEM-Format konvertieren.

Gehen Sie wie folgt vor, um ein Codesignaturzertifikat zu erstellen, das mit der Playground-Zertifikatshierarchie von Texas Instruments verknüpft ist und die Code Signing-Kriterien erfüllt. AWS Certificate Manager AWS IoT 

**Anmerkung**  
Um ein Zertifikat für die Codesignierung erstellen zu können, müssen Sie [OpenSSL](https://www.openssl.org/) auf Ihrem Gerät installieren. Stellen Sie nach der Installation von OpenSSL sicher, dass `openssl` der ausführbaren OpenSSL-Datei in Ihrer Eingabeaufforderung oder Terminal-Umgebung zugewiesen ist.

**Um ein selbstsigniertes Codesignaturzertifikat zu erstellen**

1. Öffnen Sie eine Eingabeaufforderung oder ein Terminal mit Administratorberechtigungen.

1. Verwenden Sie in Ihrem Arbeitsverzeichnis den folgenden Text, um eine Datei mit dem Namen `cert_config.txt` zu erstellen. Ersetze es *test\$1signer@amazon.com* durch deine E-Mail-Adresse.

   ```
   [ req ]
   prompt             = no
   distinguished_name = my dn
   
   [ my dn ]
   commonName = test_signer@amazon.com
   
   [ my_exts ]
   keyUsage         = digitalSignature
   extendedKeyUsage = codeSigning
   ```

1. Erstellen Sie einen privaten Schlüssel und eine Zertifikatssignierungsanforderung (Certificate Signing Request, CSR):

   ```
   openssl req -config cert_config.txt -extensions my_exts -nodes -days 365 -newkey rsa:2048 -keyout tisigner.key -out tisigner.csr
   ```

1. Konvertieren Sie den privaten Schlüssel der Stamm-CA von Texas Instruments-Playground aus dem DER-Format in das PEM-Format.

   Der private Schlüssel der Stamm-CA von TI-Playground befindet sich hier:

   `C:\ti\simplelink_cc32xx_sdk_version\tools\cc32xx_tools\certificate-playground\dummy-root-ca-cert-key` (Windows) 

   `/Applications/Ti/simplelink_cc32xx_sdk_version/tools/cc32xx_tools/certificate-playground/dummy-root-ca-cert-key` (macOS)

   ```
   openssl rsa -inform DER -in dummy-root-ca-cert-key -out dummy-root-ca-cert-key.pem
   ```

1. Konvertieren Sie das Zertifikat der Stamm-CA von Texas Instruments-Playground vom DER-Format in das PEM-Format.

   Das TI-Playground Stammzertifikat befindet sich hier:

   `C:\ti\simplelink_cc32xx_sdk_version\tools\cc32xx_tools\certificate-playground/dummy-root-ca-cert` (Windows) 

   `/Applications/Ti/simplelink_cc32xx_sdk_version/tools/cc32xx_tools/certificate-playground/dummy-root-ca-cert` (macOS)

   ```
   openssl x509 -inform DER -in dummy-root-ca-cert -out dummy-root-ca-cert.pem
   ```

1. Signieren Sie die CSR mit der Stamm-CA von Texas Instruments:

   ```
   openssl x509 -extfile cert_config.txt -extensions my_exts  -req -days 365 -in tisigner.csr -CA dummy-root-ca-cert.pem -CAkey dummy-root-ca-cert-key.pem -set_serial 01 -out tisigner.crt.pem -sha1
   ```

1. Konvertieren Sie Ihr Codesignierungszertifikat (`tisigner.crt.pem`) in das DER-Format: 

   ```
   openssl x509 -in tisigner.crt.pem -out tisigner.crt.der -outform DER
   ```
**Anmerkung**  
Sie schreiben das `tisigner.crt.der`-Zertifikat später auf das TI-Entwicklungsboard.

1. Importieren Sie das Codesignaturzertifikat, den privaten Schlüssel und die Zertifikatskette in: AWS Certificate Manager

   ```
   aws acm import-certificate --certificate fileb://tisigner.crt.pem --private-key fileb://tisigner.key --certificate-chain fileb://dummy-root-ca-cert.pem
   ```

   Dieser Befehl zeigt einen ARN für Ihr Zertifikat an. Sie benötigen diesen ARN, wenn Sie einen OTA-Update-Job anlegen.
**Anmerkung**  
Dieser Schritt wurde unter der Annahme geschrieben, dass Sie Code Signing AWS IoT zum Signieren Ihrer Firmware-Images verwenden werden. Obwohl die Verwendung von Code Signing for empfohlen AWS IoT wird, können Sie Ihre Firmware-Images auch manuell signieren.

# Erstellen eines Codesignaturzertifikats für den Espressif ESP32
<a name="ota-code-sign-cert-esp"></a>

**Wichtig**  <a name="deprecation-message"></a>
Diese Referenzintegration wird im Amazon-FreeRTOS-Repository gehostet, das veraltet ist. Wir empfehlen, dass Sie [hier beginnen](freertos-getting-started-modular.md), wenn Sie ein neues Projekt erstellen. Wenn Sie bereits ein vorhandenes FreeRTOS-Projekt haben, das auf dem inzwischen veralteten Amazon-FreeRTOS-Repository basiert, finden Sie weitere Informationen unter. [Leitfaden zur Migration des Amazon-FreerTOS Github-Repositorys](github-repo-migration.md)

Die ESP32 Espressif-Boards unterstützen ein selbstsigniertes SHA-256 mit ECDSA-Codesignaturzertifikat.

**Anmerkung**  
Um ein Zertifikat für die Codesignierung erstellen zu können, müssen Sie [OpenSSL](https://www.openssl.org/) auf Ihrem Gerät installieren. Stellen Sie nach der Installation von OpenSSL sicher, dass `openssl` der ausführbaren OpenSSL-Datei in Ihrer Eingabeaufforderung oder Terminal-Umgebung zugewiesen ist.  
Verwenden Sie das AWS Command Line Interface , um Ihr Codesignaturzertifikat, Ihren privaten Schlüssel und Ihre Zertifikatskette zu importieren. AWS Certificate Manager Informationen zur Installation von finden Sie AWS CLI unter [Installation von](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html). AWS CLI

1. Verwenden Sie in Ihrem Arbeitsverzeichnis den folgenden Text, um eine Datei mit dem Namen `cert_config.txt` zu erstellen. *test\$1signer@amazon.com*Ersetze es durch deine E-Mail-Adresse:

   ```
   [ req ]
   prompt             = no
   distinguished_name = my_dn
                       
   [ my_dn ]
   commonName = test_signer@amazon.com
                       
   [ my_exts ]
   keyUsage         = digitalSignature
   extendedKeyUsage = codeSigning
   ```

1. Erstellen Sie einen privaten ECDSA-Code-Signaturschlüssel:

   ```
   openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -pkeyopt ec_param_enc:named_curve -outform PEM -out ecdsasigner.key
   ```

1. Erstellen Sie ein ECDSA-Codesignierungszertifikat:

   ```
   openssl req -new -x509 -config cert_config.txt -extensions my_exts -nodes -days 365 -key ecdsasigner.key -out ecdsasigner.crt
   ```

1. Importieren Sie das Codesignaturzertifikat, den privaten Schlüssel und die Zertifikatskette in: AWS Certificate Manager

   ```
   aws acm import-certificate --certificate fileb://ecdsasigner.crt --private-key fileb://ecdsasigner.key
   ```

   Dieser Befehl zeigt einen ARN für Ihr Zertifikat an. Sie benötigen diesen ARN, wenn Sie einen OTA-Update-Job anlegen.
**Anmerkung**  
Dieser Schritt wurde unter der Annahme geschrieben, dass Sie Code Signing AWS IoT zum Signieren Ihrer Firmware-Images verwenden werden. Obwohl die Verwendung von Code Signing for empfohlen AWS IoT wird, können Sie Ihre Firmware-Images auch manuell signieren.

# Erstellen eines Zertifikats für die Codesignierung für das Nordic nrf52840-dk
<a name="ota-code-sign-cert-nordic"></a>

**Wichtig**  <a name="deprecation-message"></a>
Diese Referenzintegration wird im Amazon-FreeRTOS-Repository gehostet, das veraltet ist. Wir empfehlen, dass Sie [hier beginnen](freertos-getting-started-modular.md), wenn Sie ein neues Projekt erstellen. Wenn Sie bereits ein vorhandenes FreeRTOS-Projekt haben, das auf dem inzwischen veralteten Amazon-FreeRTOS-Repository basiert, finden Sie weitere Informationen unter. [Leitfaden zur Migration des Amazon-FreerTOS Github-Repositorys](github-repo-migration.md)

Das nordische nrf52840-dk unterstützt ein selbstsigniertes Zertifikat mit ECDSA-Codesignaturen. SHA256 

**Anmerkung**  
Um ein Zertifikat für die Codesignierung erstellen zu können, müssen Sie [OpenSSL](https://www.openssl.org/) auf Ihrem Gerät installieren. Stellen Sie nach der Installation von OpenSSL sicher, dass `openssl` der ausführbaren OpenSSL-Datei in Ihrer Eingabeaufforderung oder Terminal-Umgebung zugewiesen ist.  
Verwenden Sie das, AWS Command Line Interface um Ihr Codesignaturzertifikat, Ihren privaten Schlüssel und Ihre Zertifikatskette zu importieren. AWS Certificate Manager Informationen zur Installation von finden Sie AWS CLI unter [Installation von](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html). AWS CLI

1. Verwenden Sie in Ihrem Arbeitsverzeichnis den folgenden Text, um eine Datei mit dem Namen `cert_config.txt` zu erstellen. *test\$1signer@amazon.com*Ersetze es durch deine E-Mail-Adresse:

   ```
   [ req ]
   prompt             = no
   distinguished_name = my_dn
                       
   [ my_dn ]
   commonName = test_signer@amazon.com
                       
   [ my_exts ]
   keyUsage         = digitalSignature
   extendedKeyUsage = codeSigning
   ```

1. Erstellen Sie einen privaten ECDSA-Code-Signaturschlüssel:

   ```
   openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -pkeyopt ec_param_enc:named_curve -outform PEM -out ecdsasigner.key
   ```

1. Erstellen Sie ein ECDSA-Codesignierungszertifikat:

   ```
   openssl req -new -x509 -config cert_config.txt -extensions my_exts -nodes -days 365 -key ecdsasigner.key -out ecdsasigner.crt
   ```

1. Importieren Sie das Codesignaturzertifikat, den privaten Schlüssel und die Zertifikatskette in: AWS Certificate Manager

   ```
   aws acm import-certificate --certificate fileb://ecdsasigner.crt --private-key fileb://ecdsasigner.key
   ```

   Dieser Befehl zeigt einen ARN für Ihr Zertifikat an. Sie benötigen diesen ARN, wenn Sie einen OTA-Update-Job anlegen.
**Anmerkung**  
Dieser Schritt wurde unter der Annahme geschrieben, dass Sie Code Signing AWS IoT zum Signieren Ihrer Firmware-Images verwenden werden. Obwohl die Verwendung von Code Signing for empfohlen AWS IoT wird, können Sie Ihre Firmware-Images auch manuell signieren.

# Erstellen eines Codesignaturzertifikats für den FreeRTOS-Windows-Simulator
<a name="ota-code-sign-cert-win"></a>

Der FreeRTOS Windows-Simulator benötigt ein Codesignaturzertifikat mit einem ECDSA P-256-Schlüssel und einem SHA-256-Hash, um OTA-Updates durchzuführen. Wenn Sie kein Codesignierungszertifikat besitzen, führen Sie die folgenden Schritte aus, um ein Codesignierungszertifikat zu erstellen.

**Anmerkung**  
Um ein Zertifikat für die Codesignierung erstellen zu können, müssen Sie [OpenSSL](https://www.openssl.org/) auf Ihrem Gerät installieren. Stellen Sie nach der Installation von OpenSSL sicher, dass `openssl` der ausführbaren OpenSSL-Datei in Ihrer Eingabeaufforderung oder Terminal-Umgebung zugewiesen ist.  
Verwenden Sie das AWS Command Line Interface , um Ihr Codesignaturzertifikat, Ihren privaten Schlüssel und Ihre Zertifikatskette in zu importieren. AWS Certificate Manager Informationen zur Installation von finden Sie AWS CLI unter [Installation von](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html). AWS CLI

1. Verwenden Sie in Ihrem Arbeitsverzeichnis den folgenden Text, um eine Datei mit dem Namen `cert_config.txt` zu erstellen. *test\$1signer@amazon.com*Ersetze es durch deine E-Mail-Adresse:

   ```
   [ req ]
   prompt             = no
   distinguished_name = my_dn
                       
   [ my_dn ]
   commonName = test_signer@amazon.com
                       
   [ my_exts ]
   keyUsage         = digitalSignature
   extendedKeyUsage = codeSigning
   ```

1. Erstellen Sie einen privaten ECDSA-Code-Signaturschlüssel:

   ```
   openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -pkeyopt ec_param_enc:named_curve -outform PEM -out ecdsasigner.key
   ```

1. Erstellen Sie ein ECDSA-Codesignierungszertifikat:

   ```
   openssl req -new -x509 -config cert_config.txt -extensions my_exts -nodes -days 365 -key ecdsasigner.key -out ecdsasigner.crt
   ```

1. Importieren Sie das Codesignaturzertifikat, den privaten Schlüssel und die Zertifikatskette in: AWS Certificate Manager

   ```
   aws acm import-certificate --certificate fileb://ecdsasigner.crt --private-key fileb://ecdsasigner.key
   ```

   Dieser Befehl zeigt einen ARN für Ihr Zertifikat an. Sie benötigen diesen ARN, wenn Sie einen OTA-Update-Job anlegen.
**Anmerkung**  
Dieser Schritt wurde unter der Annahme geschrieben, dass Sie Code Signing AWS IoT zum Signieren Ihrer Firmware-Images verwenden werden. Obwohl die Verwendung von Code Signing for empfohlen AWS IoT wird, können Sie Ihre Firmware-Images auch manuell signieren.

# Erstellen eines Zertifikats für die Codesignierung für benutzerdefinierte Hardware
<a name="ota-code-sign-cert-other"></a>

Erstellen Sie mit den geeigneten Tools ein selbstsigniertes Zertifikat und einen privaten Schlüssel für Ihre Hardware.

Verwenden Sie den AWS Command Line Interface , um Ihr Codesignaturzertifikat, Ihren privaten Schlüssel und Ihre Zertifikatskette in zu importieren. AWS Certificate Manager Informationen zur Installation von finden Sie AWS CLI unter [Installation von](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html). AWS CLI

Nachdem Sie Ihr Codesignaturzertifikat erstellt haben, können Sie es verwenden, um es in AWS CLI ACM zu importieren:

```
aws acm import-certificate --certificate fileb://code-sign.crt --private-key fileb://code-sign.key
```

Die Ausgabe dieses Befehls zeigt einen ARN für Ihr Zertifikat an. Sie benötigen diesen ARN, wenn Sie einen OTA-Update-Job anlegen.

ACM erfordert, dass Zertifikate bestimmte Algorithmen und Schlüsselgrößen verwenden. Weitere Informationen finden Sie unter [Voraussetzungen für den Import von Zertifikaten](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-prerequisites.html). Weitere Informationen zu ACM finden Sie unter [Zertifikate importieren](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) in. AWS Certificate Manager

Sie müssen den Inhalt Ihres Codesignaturzertifikats in die `vendors/vendor/boards/board/aws_demos/config_files/ota_demo_config.h` Datei kopieren, einfügen und formatieren, die Teil des FreeRTOS-Codes ist, den Sie später herunterladen.

# Gewähren Sie Zugriff auf die Codesignatur für AWS IoT
<a name="code-sign-policy"></a>

Um Zugriff zu gewähren, fügen Sie Ihren Benutzern, Gruppen oder Rollen Berechtigungen hinzu:
+ Benutzer und Gruppen in AWS IAM Identity Center:

  Erstellen Sie einen Berechtigungssatz. Befolgen Sie die Anweisungen unter [Erstellen eines Berechtigungssatzes](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) im *AWS IAM Identity Center -Benutzerhandbuch*.
+ Benutzer, die in IAM über einen Identitätsanbieter verwaltet werden:

  Erstellen Sie eine Rolle für den Identitätsverbund. Befolgen Sie die Anleitung unter [Eine Rolle für einen externen Identitätsanbieter (Verbund) erstellen](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) im *IAM-Benutzerhandbuch*.
+ IAM-Benutzer:
  + Erstellen Sie eine Rolle, die Ihr Benutzer annehmen kann. Befolgen Sie die Anleitung unter [Eine Rolle für einen IAM-Benutzer erstellen](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) im *IAM-Benutzerhandbuch*.
  + (Nicht empfohlen) Weisen Sie einem Benutzer eine Richtlinie direkt zu oder fügen Sie einen Benutzer zu einer Benutzergruppe hinzu. Befolgen Sie die Anweisungen unter [Hinzufügen von Berechtigungen zu einem Benutzer (Konsole)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) im *IAM-Benutzerhandbuch*.

# Laden Sie FreeRTOS mit der OTA-Bibliothek herunter
<a name="ota-download-freertos"></a>

Sie können FreeRTOS von klonen oder herunterladen. [GitHub](https://github.com/freertos/freertos) Anweisungen finden Sie in der Datei [README.md](https://github.com/freertos/freertos/blob/main/README.md).

Informationen zum Einrichten und Ausführen der OTA-Demoanwendung finden Sie unter [Over-the-air aktualisiert die Demo-Anwendung](ota-demo.md).

**Wichtig**  
In diesem Thema wird der Pfad zum FreeRTOS-Download-Verzeichnis als bezeichnet. `freertos`
Leerzeichen im `freertos`-Pfad können Build-Fehler verursachen. Stellen Sie beim Klonen oder Kopieren des Repositorys sicher, dass der Pfad, den Sie erstellen, keine Leerzeichen enthält.
Die maximale Länge eines Dateipfades bei Microsoft Windows ist 260 Zeichen. Lange FreeRTOS-Download-Verzeichnispfade können zu Build-Fehlern führen.
Da der Quellcode symbolische Links enthalten kann, müssen Sie, wenn Sie Windows zum Extrahieren des Archivs verwenden, möglicherweise:  
[Entwicklermodus](https://docs.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development) aktivieren oder 
Verwenden Sie eine Konsole mit Administratorberechtigungen.
Auf diese Weise kann Windows beim Extrahieren des Archivs ordnungsgemäß symbolische Links erstellen. Andernfalls werden symbolische Links als normale Dateien geschrieben, die die Pfade der symbolischen Links als Text enthalten oder leer sind. Weitere Informationen finden Sie im Blogeintrag [Symlinks in Windows 10\$1](https://blogs.windows.com/windowsdeveloper/2016/12/02/symlinks-windows-10/) .  
Wenn Sie Git unter Windows verwenden, müssen Sie den Entwicklermodus aktivieren oder Sie müssen:   
Setzen `core.symlinks` Sie ihn mit dem folgenden Befehl auf true:  

    ```
    git config --global core.symlinks true
    ```
Verwenden Sie immer dann eine Konsole mit Administratorrechten, wenn Sie einen Git-Befehl verwenden, der in das System schreibt (z. B.**git pull**,**git clone**, und**git submodule update --init --recursive**).

# Voraussetzungen für OTA-Updates mit MQTT
<a name="ota-mqtt-freertos"></a>

In diesem Abschnitt werden die allgemeinen Anforderungen für die Verwendung von MQTT zur Ausführung over-the-air (OTA-Updates) beschrieben.

## Mindestanforderungen
<a name="ota-mqtt-freertos-min-requirements"></a>
+ Die Gerätefirmware muss die erforderlichen FreeRTOS-Bibliotheken (CoreMQTT-Agent, OTA-Update und deren Abhängigkeiten) enthalten.
+ FreeRTOS Version 1.4.0 oder höher ist erforderlich. Wir empfehlen jedoch, wenn möglich die neueste Version zu verwenden.

## Konfigurationen
<a name="ota-mqtt-freertos-config"></a>

Ab Version 201912.00 kann FreeRTOS OTA entweder das HTTP- oder das MQTT-Protokoll verwenden, um Firmware-Update-Images von auf Geräte zu übertragen. AWS IoT Wenn Sie beide Protokolle angeben, wenn Sie ein OTA-Update in FreeRTOS erstellen, bestimmt jedes Gerät das Protokoll, das für die Übertragung des Images verwendet wird. Weitere Informationen finden Sie unter [Voraussetzungen für OTA-Updates mit HTTP](ota-http-freertos.md).

Standardmäßig verwendet die Konfiguration der OTA-Protokolle in [https://github.com/aws/amazon-freertos/blob/main/vendors/vendor/boards/board/aws_demos/config_files/ota_config.h](https://github.com/aws/amazon-freertos/blob/main/vendors/vendor/boards/board/aws_demos/config_files/ota_config.h)das MQTT-Protokoll.

## Gerätespezifische Konfigurationen
<a name="ota-mqtt-freertos-dev-config"></a>

Keine.

## Speicherauslastung
<a name="ota-mqtt-freertos-memory"></a>

Wenn MQTT für die Datenübertragung verwendet wird, ist kein zusätzlicher Speicher für die MQTT-Verbindung erforderlich, da sie von Steuerungs- und Datenvorgängen gemeinsam genutzt wird. 

## Geräterichtlinie
<a name="ota-mqtt-freertos-device-policy"></a>

Jedes Gerät, das mithilfe von MQTT ein OTA-Update erhält, muss als Ding in registriert sein AWS IoT und dem Ding muss eine Richtlinie wie die hier aufgeführte beigefügt sein. Weitere Informationen zu den Elementen finden Sie unter den `"Action"`- und `"Resource"`-Objekten der [AWS IoT Core-Richtlinienaktionen](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html) und [AWS IoT Core-Aktionsressourcen](https://docs.aws.amazon.com/iot/latest/developerguide/iot-action-resources.html).

**Hinweise**
+ Die `iot:Connect` Berechtigungen ermöglichen es Ihrem Gerät, eine Verbindung AWS IoT über MQTT herzustellen.
+ Die `iot:Subscribe` `iot:Publish` Berechtigungen zu den Themen AWS IoT Jobs (`.../jobs/*`) ermöglichen es dem verbundenen Gerät, Job-Benachrichtigungen und Job-Dokumente zu empfangen und den Abschlussstatus einer Job-Ausführung zu veröffentlichen.
+ Die `iot:Publish` Berechtigungen `iot:Subscribe` und zu den Themen AWS IoT OTA-Streams (`.../streams/*`) ermöglichen es dem verbundenen Gerät, OTA-Aktualisierungsdaten von AWS IoT abzurufen. Diese Berechtigungen sind zum Ausführen von Firmware-Updates über MQTT erforderlich.
+ Die `iot:Receive` Berechtigungen ermöglichen es AWS IoT Core , Nachrichten zu diesen Themen auf dem angeschlossenen Gerät zu veröffentlichen. Diese Berechtigung wird bei jeder Zustellung einer MQTT-Nachricht überprüft. Sie können diese Berechtigung verwenden, um den Zugriff auf Clients zu widerrufen, die derzeit ein Thema abonniert haben.

# Voraussetzungen für OTA-Updates mit HTTP
<a name="ota-http-freertos"></a>

In diesem Abschnitt werden die allgemeinen Anforderungen für die Verwendung von HTTP zur Durchführung von over-the-air (OTA-) Updates beschrieben. Ab Version 201912.00 kann FreeRTOS OTA entweder das HTTP- oder das MQTT-Protokoll verwenden, um Firmware-Update-Images von auf Geräte zu übertragen. AWS IoT 

**Anmerkung**  
Obwohl das HTTP-Protokoll für die Übertragung des Firmware-Images verwendet werden kann, ist die CoreMQTT-Agentenbibliothek dennoch erforderlich, da andere Interaktionen die CoreMQTT-Agentenbibliothek AWS IoT Core verwenden, einschließlich des Sendens oder Empfangens von Benachrichtigungen zur Jobausführung, Jobdokumenten und Ausführungsstatus-Updates. 
Wenn Sie für den OTA-Aktualisierungsauftrag sowohl das MQTT- als auch das HTTP-Protokoll festlegen, bestimmt das Setup der OTA-Agent-Software auf jedem einzelnen Gerät, welches Protokoll für die Übertragung des Firmware-Images verwendet wird. Um für den OTA-Agent von der standardmäßigen MQTT-Protokollmethode zum HTTP-Protokoll zu wechseln, können Sie die Header-Dateien ändern, die zum Kompilieren des FreeRTOS-Quellcodes für das Gerät verwendet werden.

## Mindestanforderungen
<a name="ota-http-freertos-min-requirements"></a>
+ Die Gerätefirmware muss die erforderlichen FreeRTOS-Bibliotheken (CoreMQTT Agent, HTTP, OTA Agent und deren Abhängigkeiten) enthalten.
+ FreeRTOS Version 201912.00 oder höher ist erforderlich, um die Konfiguration der OTA-Protokolle zu ändern, um die OTA-Datenübertragung über HTTP zu ermöglichen.

## Konfigurationen
<a name="ota-http-freertos-config"></a>

In der Datei [https://github.com/aws/amazon-freertos/blob/main/vendors/vendor/boards/board/aws_demos/config_files/ota_config.h](https://github.com/aws/amazon-freertos/blob/main/vendors/vendor/boards/board/aws_demos/config_files/ota_config.h) finden Sie die folgende Konfiguration der OTA-Protokolle.

**So aktivieren Sie die OTA-Datenübertragung über HTTP**

1. Ändern Sie `configENABLED_DATA_PROTOCOLS` zu `OTA_DATA_OVER_HTTP`.

1. Bei OTA-Updates können Sie beide Protokolle angeben, so dass als Protokoll entweder MQTT oder HTTP verwendet werden kann. Sie können als primäres Protokoll für das Gerät HTTP festlegen, indem Sie `configOTA_PRIMARY_DATA_PROTOCOL` in `OTA_DATA_OVER_HTTP` ändern. 

**Anmerkung**  
HTTP wird nur für OTA-Datenvorgänge unterstützt. Für Steuerungsvorgänge müssen Sie MQTT verwenden.

## Gerätespezifische Konfigurationen
<a name="ota-http-freertos-device-configuration"></a>

**ESP32**  
Aufgrund einer begrenzten Menge an RAM müssen Sie BLE deaktivieren, wenn Sie HTTP als OTA-Datenprotokoll aktivieren. Ändern Sie in der Datei [https://github.com/aws/amazon-freertos/blob/main/vendors/espressif/boards/esp32/aws_demos/config_files/aws_iot_network_config.h](https://github.com/aws/amazon-freertos/blob/main/vendors/espressif/boards/esp32/aws_demos/config_files/aws_iot_network_config.h) nur `configENABLED_NETWORKS` zu `AWSIOT_NETWORK_TYPE_WIFI`.  

```
/**
     * @brief Configuration flag which is used to enable one or more network interfaces for a board.
     *
     * The configuration can be changed any time to keep one or more network enabled or disabled.
     * More than one network interfaces can be enabled by using 'OR' operation with flags for
     * each network types supported. Flags for all supported network types can be found
     * in "aws_iot_network.h"
     *
     */
    #define configENABLED_NETWORKS      ( AWSIOT_NETWORK_TYPE_WIFI )
```

## Speicherauslastung
<a name="ota-http-freertos-memory"></a>

Wenn MQTT für die Datenübertragung verwendet wird, ist kein zusätzlicher Heap-Speicher für die MQTT-Verbindung erforderlich, da sie von Steuerungs- und Datenvorgängen gemeinsam genutzt wird. Das Aktivieren von Daten über HTTP erfordert jedoch zusätzlichen Heap-Speicher. Im Folgenden finden Sie die Daten zur Heap-Speichernutzung für alle unterstützten Plattformen, die mit der `xPortGetFreeHeapSize` FreeRTOS-API berechnet wurden. Sie müssen sicherstellen, dass genügend RAM zur Verwendung der OTA-Bibliothek vorhanden ist.

****Texas Instruments SF-LAUNCHXL CC3220****  
Steuerungsvorgänge (MQTT): 12 KB  
Datenvorgänge (HTTP): 10 KB  
 TI verbraucht deutlich weniger RAM, da es SSL auf Hardware ausführt und somit die mbedtls-Bibliothek nicht verwendet.

****Mikrochip PIC32 Curiosity MZEF****  
Verwaltungsvorgänge (MQTT): 65 KB  
Datenvorgänge (HTTP): 43 KB

****Espressif ESP32****  
Verwaltungsvorgänge (MQTT): 65 KB  
Datenvorgänge (HTTP): 45 KB  
BLE on ESP32 benötigt etwa 87 KB RAM. Das RAM reicht nicht aus, um alle von ihnen zu aktivieren, was in den gerätespezifischen Konfigurationen oben erwähnt wird.

****Windows Simulator****  
Verwaltungsvorgänge (MQTT): 82 KB   
Datenvorgänge (HTTP): 63 KB 

****Nordic nrf52840-dk****  
HTTP wird nicht unterstützt.

## Geräterichtlinie
<a name="ota-http-freertos-device-policy"></a>

Mit dieser Richtlinie können Sie entweder MQTT oder HTTP für OTA-Updates verwenden.

Jedes Gerät, das ein OTA-Update über HTTP erhält, muss als Objekt in AWS IoT registriert sein, und das Objekt muss über eine angehängte Richtlinie wie die hier aufgelistete verfügen. Weitere Informationen zu den Elementen finden Sie unter den `"Action"`- und `"Resource"`-Objekten der [AWS IoT Core-Richtlinienaktionen](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html) und [AWS IoT Core-Aktionsressourcen](https://docs.aws.amazon.com/iot/latest/developerguide/iot-action-resources.html).

**Hinweise**
+ Mit den `iot:Connect`-Berechtigungen kann Ihr Gerät über MQTT eine Verbindung mit AWS IoT herstellen. 
+ Die `iot:Publish` Berechtigungen `iot:Subscribe` und zu den Themen AWS IoT Jobs (`.../jobs/*`) ermöglichen es dem verbundenen Gerät, Auftragsbenachrichtigungen und Auftragsdokumente zu empfangen und den Abschlussstatus einer Auftragsausführung zu veröffentlichen.
+ Die `iot:Receive` Berechtigungen ermöglichen es AWS IoT Core , Nachrichten zu diesen Themen auf dem aktuell verbundenen Gerät zu veröffentlichen. Diese Berechtigung wird bei jeder Zustellung einer MQTT-Nachricht überprüft. Sie können diese Berechtigung verwenden, um den Zugriff auf Clients zu widerrufen, die derzeit ein Thema abonniert haben.