

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Prerequisiti per l'aggiornamento OTA
<a name="ota-prereqs"></a>

Per utilizzare gli aggiornamenti over-the-air (OTA), procedi come segue:
+ Controllare i [Prerequisiti per gli aggiornamenti OTA mediante HTTP](ota-http-freertos.md) o i [Prerequisiti per gli aggiornamenti OTA mediante MQTT](ota-mqtt-freertos.md).
+ [Crea un bucket Amazon S3 per archiviare l'aggiornamento](dg-ota-bucket.md).
+ [Creazione di un ruolo del servizio per gli aggiornamenti OTA](create-service-role.md).
+ [Creazione di una policy utente OTA](create-ota-user-policy.md).
+ [Creazione di un certificato di firma del codice](ota-code-sign-cert.md).
+ Se utilizzi Code Signing per AWS IoT,[Concedi l'accesso alla firma del codice per AWS IoT](code-sign-policy.md).
+ [Scarica FreerTOS con la libreria OTA](ota-download-freertos.md).

# Crea un bucket Amazon S3 per archiviare l'aggiornamento
<a name="dg-ota-bucket"></a>

I file di aggiornamento OTA sono archiviati in bucket Amazon S3.

Se utilizzi Code Signing for AWS IoT, il comando che usi per creare un processo di firma del codice richiede un bucket di origine (in cui si trova l'immagine del firmware non firmata) e un bucket di destinazione (in cui viene scritta l'immagine del firmware firmata). È possibile specificare lo stesso bucket per l'origine e per la destinazione. I nomi dei file vengono modificati in GUIDs modo che i file originali non vengano sovrascritti.<a name="create-bucket"></a>

**Come creare un bucket Amazon S3.**

1. Accedi alla console Amazon S3 all'indirizzo. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Seleziona **Crea bucket**.

1. Inserisci il nome del **bucket.**

1. In **Impostazioni Bucket per Blocca accesso pubblico**, tieni selezionata l'opzione **Blocca tutto l'accesso pubblico** per accettare le autorizzazioni predefinite.

1. In **Bucket Versioning**, seleziona **Abilita** per mantenere tutte le versioni nello stesso bucket.

1. Seleziona **Crea bucket**.

Per ulteriori informazioni su Amazon S3, consulta la Guida per l'[utente di Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/).

# Creazione di un ruolo del servizio per gli aggiornamenti OTA
<a name="create-service-role"></a>

Il servizio OTA Update assume questo ruolo per creare e gestire i lavori di aggiornamento OTA per tuo conto.<a name="create-service-role-steps"></a>

**Per creare un ruolo del servizio OTA**

1. Accedi alla [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel riquadro di navigazione scegli **Ruoli**.

1. Scegli **Crea ruolo**.

1. In **Select type of trusted entity (Seleziona tipo di entità attendibile)**, scegli **AWS Service**.

1. Scegli **IoT** dall'elenco dei AWS servizi.

1. In **Select your use case (Seleziona il tuo caso d'uso)** seleziona **IoT**.

1. Scegliere **Next: Permissions (Successivo: Autorizzazioni)**.

1. Scegliere **Next: Tags (Successivo: Tag)**.

1. Scegliere **Next:Review (Successivo: Rivedi)**.

1. Digitare un nome e una descrizione per il ruolo, quindi scegliere **Create role (Crea ruolo)**.

Per ulteriori informazioni sui ruoli IAM, consulta [IAM Roles](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

**Importante**  
Per risolvere il confuso problema relativo alla sicurezza secondaria, devi seguire le istruzioni contenute nella [AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/cross-service-confused-deputy-prevention.html)guida.<a name="add-ota-permissions"></a>

**Per aggiungere autorizzazioni per gli aggiornamenti OTA al ruolo del servizio OTA**

1. Nella casella di ricerca sulla pagina della console IAM, inserisci il nome del tuo ruolo, quindi selezionalo dall'elenco.

1. Scegli **Collega policy**.

1. Nella casella **di ricerca**, inserisci "AmazonFreeRTOSOTAUpdate«, seleziona **AmazonFreeRTOSOTAUpdate**dall'elenco delle politiche filtrate, quindi scegli **Allega policy per allegare** la policy al tuo ruolo di servizio.<a name="add-iam-permissions"></a>

**Per aggiungere le autorizzazioni IAM richieste al tuo ruolo di servizio OTA**

1. Nella casella di ricerca sulla pagina della console IAM, inserisci il nome del tuo ruolo, quindi selezionalo dall'elenco.

1. Scegliere **Add inline policy (Aggiungi policy inline)**.

1. Scegliere la scheda **JSON**.

1. Copiare e incollare il documento della policy seguente nella casella di testo:

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

****  

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

------

   Assicurati di sostituirlo *your\$1account\$1id* con l'ID AWS del tuo account e *your\$1role\$1name* con il nome del ruolo del servizio OTA.

1. Scegliere **Esamina policy**.

1. Immettere un nome per la policy e scegliere **Create policy (Crea policy)**.

**Nota**  
La procedura seguente non è richiesta se il nome del bucket Amazon S3 inizia con «afr-ota». In caso affermativo, la policy AWS gestita include `AmazonFreeRTOSOTAUpdate` già le autorizzazioni richieste. <a name="add-s3-permissions"></a>

****Per aggiungere le autorizzazioni Amazon S3 richieste al tuo ruolo di servizio OTA****

1. Nella casella di ricerca sulla pagina della console IAM, inserisci il nome del tuo ruolo, quindi selezionalo dall'elenco.

1. Scegliere **Add inline policy (Aggiungi policy inline)**.

1. Scegliere la scheda **JSON**.

1. Copiare e incollare il documento della policy seguente nella casella.

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

****  

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

------

   Questa politica concede al ruolo di servizio OTA l'autorizzazione a leggere oggetti Amazon S3. Assicurati di sostituirlo *example-bucket* con il nome del tuo bucket.

1. Scegliere **Esamina policy**.

1. Immettere un nome per la policy e scegliere **Create policy (Crea policy)**.

# Creazione di una policy utente OTA
<a name="create-ota-user-policy"></a>

È necessario concedere all'utente l'autorizzazione per eseguire over-the-air gli aggiornamenti. L'utente deve essere dotato delle autorizzazioni per:
+ Accedere al bucket S3 in cui sono archiviati gli aggiornamenti del firmware.
+ Accedi ai certificati archiviati in AWS Certificate Manager.
+ Accedi alla funzionalità di consegna dei file AWS IoT basata su MQTT.
+ Accedi agli aggiornamenti OTA di FreerTOS.
+ Accedi ai lavori AWS IoT .
+ Accedi a IAM.
+ Firma del codice di accesso per AWS IoT. Per informazioni, consulta [Concedi l'accesso alla firma del codice per AWS IoT](code-sign-policy.md).
+ Elenca le piattaforme hardware FreerTOS.
+ Taggare e rimuovere i tag dalle risorse AWS IoT .

Per concedere all'utente le autorizzazioni richieste, consulta [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) Policies. Vedi anche [Autorizzazione di utenti e servizi cloud a utilizzare AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iam-policy-users-jobs.html) Jobs.

Per fornire l’accesso, aggiungi autorizzazioni agli utenti, gruppi o ruoli:
+ Utenti e gruppi in AWS IAM Identity Center:

  Crea un set di autorizzazioni. Segui le istruzioni riportate nella pagina [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) (Creazione di un set di autorizzazioni) nella *Guida per l’utente di AWS IAM Identity Center *.
+ Utenti gestiti in IAM tramite un provider di identità:

  Crea un ruolo per la federazione delle identità. Segui le istruzioni riportate nella pagina [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) della *Guida per l’utente IAM*.
+ Utenti IAM:
  + Crea un ruolo che l’utente possa assumere. Segui le istruzioni riportate nella pagina [Create a role for an IAM user](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) della *Guida per l’utente IAM*.
  + (Non consigliato) Collega una policy direttamente a un utente o aggiungi un utente a un gruppo di utenti. Segui le istruzioni riportate nella pagina [Aggiunta di autorizzazioni a un utente (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) nella *Guida per l’utente IAM*.

# Creazione di un certificato di firma del codice
<a name="ota-code-sign-cert"></a>

Per aggiungere una firma digitale alle immagini del firmware, sono necessari una chiave privata e del certificato di firma del codice. A scopo di test, puoi creare un certificato autofirmato e una chiave privata. Per gli ambienti di produzione, acquista un certificato tramite una nota autorità di certificazione (CA).

Piattaforme diverse richiedono tipi diversi di certificati di firma del codice. Le sezioni seguenti descrivono come creare certificati di firma del codice per diverse piattaforme qualificate per FreeRTOS.

**Topics**
+ [

# Creazione di un certificato di firma del codice per Texas Instruments SF-LAUNCHXL CC3220
](ota-code-sign-cert-ti.md)
+ [

# Creazione di un certificato di firma del codice per Espressif ESP32
](ota-code-sign-cert-esp.md)
+ [

# Creazione di un certificato di firma del codice per Nordic nrf52840-dk
](ota-code-sign-cert-nordic.md)
+ [

# Creazione di un certificato di firma del codice per il simulatore Windows FreerTOS
](ota-code-sign-cert-win.md)
+ [

# Creazione di un certificato di firma del codice per l'hardware personalizzato
](ota-code-sign-cert-other.md)

# Creazione di un certificato di firma del codice per Texas Instruments SF-LAUNCHXL CC3220
<a name="ota-code-sign-cert-ti"></a>

**Importante**  <a name="deprecation-message"></a>
Questa integrazione di riferimento è ospitata nel repository Amazon-FreeRTOS che è obsoleto. Ti consigliamo di [iniziare da qui quando crei un nuovo progetto](freertos-getting-started-modular.md). Se disponi già di un progetto FreeRTOS esistente basato sull'ormai obsoleto repository Amazon-FreerTOS, consulta il. [Guida alla migrazione del repository Github di Amazon-FreeRTOS](github-repo-migration.md)

Il kit di sviluppo SimpleLink Wi-Fi CC3220 SF Wireless Microcontroller Launchpad supporta due catene di certificati per la firma del codice del firmware:
+ Produzione (certificato-catalogo)

  Per utilizzare la catena di certificati di produzione, è necessario acquistare un certificato di firma del codice commerciale e utilizzare lo [strumento TI Uniflash](http://www.ti.com/tool/UNIFLASH) per impostare la scheda sulla modalità di produzione.
+ Test e sviluppo (certificato-prodotti) 

  La catena di certificati Playground ti consente di provare gli aggiornamenti OTA con un certificato di firma del codice autofirmato.

Utilizzalo AWS Command Line Interface per importare il certificato di firma del codice, la chiave privata e la catena di certificati. AWS Certificate Manager Per ulteriori informazioni, consulta [Installazione di AWS CLI nella](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) Guida per l'*AWS Command Line Interface utente*.

Scarica e installa l'ultima versione di [SimpleLink CC3220 SDK.](http://www.ti.com/tool/download/SIMPLELINK-CC3220-SDK) Per impostazione predefinita, i file necessari si trovano qui:

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

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

I certificati nell' SimpleLink CC3220 SDK sono in formato DER. Per creare un certificato di firma del codice autofirmato, è necessario convertirlo in formato PEM.

Segui questi passaggi per creare un certificato di firma del codice che sia collegato alla gerarchia dei certificati di Texas Instruments Playground e soddisfi i criteri di Code Signing. AWS Certificate Manager AWS IoT 

**Nota**  
Per creare un certificato di firma del codice, installare [OpenSSL](https://www.openssl.org/) sul computer. Dopo aver installato OpenSSL, verifica che `openssl` sia assegnato al file eseguibile OpenSSL nel prompt dei comandi o nell'ambiente del terminale.

**Per creare un certificato di firma del codice autofirmato**

1. Utilizzando le autorizzazioni di amministratore, aprire un prompt dei comandi o un terminale.

1. Nella directory di lavoro, utilizzare il testo seguente per creare un file denominato `cert_config.txt`. *test\$1signer@amazon.com*Sostituiscilo con il tuo indirizzo email.

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

1. Creare una chiave privata e una richiesta di firma del certificato (CSR):

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

1. Convertire la chiave privata CA radice dei prodotti Texas Instruments dal formato DER al formato PEM.

   La chiave privata CA radice dei prodotti TI si trova qui:

   `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. Convertire il certificato CA radice dei prodotti Texas Instruments dal formato DER al formato PEM.

   Il certificato CA radice dei prodotti TI si trova qui:

   `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. Firmare la CSR con l'autorità di certificazione radice per 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. Convertire il certificato di firma del codice (`tisigner.crt.pem`) nel formato DER: 

   ```
   openssl x509 -in tisigner.crt.pem -out tisigner.crt.der -outform DER
   ```
**Nota**  
È possibile scrivere il certificato `tisigner.crt.der` sulla scheda di sviluppo TI successivamente.

1. Importa il certificato di firma del codice, la chiave privata e la catena di certificati 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
   ```

   Questo comando visualizza un ARN per il certificato. L'ARN sarà necessario al momento della creazione di un processo di aggiornamento OTA.
**Nota**  
Questo passaggio è stato scritto partendo dal presupposto che utilizzerai Code Signing per firmare AWS IoT le immagini del firmware. Sebbene sia consigliato l'uso di Code Signing for, AWS IoT è possibile firmare le immagini del firmware manualmente.

# Creazione di un certificato di firma del codice per Espressif ESP32
<a name="ota-code-sign-cert-esp"></a>

**Importante**  <a name="deprecation-message"></a>
Questa integrazione di riferimento è ospitata nel repository Amazon-FreeRTOS che è obsoleto. Ti consigliamo di [iniziare da qui quando crei un nuovo progetto](freertos-getting-started-modular.md). Se disponi già di un progetto FreeRTOS esistente basato sull'ormai obsoleto repository Amazon-FreerTOS, consulta il. [Guida alla migrazione del repository Github di Amazon-FreeRTOS](github-repo-migration.md)

Le schede Espressif supportano un certificato di firma del codice SHA-256 autofirmato con ECDSA ESP32 .

**Nota**  
Per creare un certificato di firma del codice, installare [OpenSSL](https://www.openssl.org/) sul computer. Dopo aver installato OpenSSL, verifica che `openssl` sia assegnato al file eseguibile OpenSSL nel prompt dei comandi o nell'ambiente del terminale.  
Utilizzalo per AWS Command Line Interface importare il certificato di firma del codice, la chiave privata e la catena di certificati. AWS Certificate Manager Per informazioni sull'installazione di AWS CLI, vedere [Installazione](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) di. AWS CLI

1. Nella directory di lavoro, utilizzare il testo seguente per creare un file denominato `cert_config.txt`. Sostituisci *test\$1signer@amazon.com* con il tuo indirizzo email:

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

1. Creare una chiave privata con firma del codice ECDSA:

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

1. Creare un certificato di firma del codice ECDSA:

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

1. Importa il certificato di firma del codice, la chiave privata e la catena di certificati in: AWS Certificate Manager

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

   Questo comando visualizza un ARN per il certificato. L'ARN sarà necessario al momento della creazione di un processo di aggiornamento OTA.
**Nota**  
Questo passaggio è stato scritto partendo dal presupposto che utilizzerai Code Signing per firmare AWS IoT le immagini del firmware. Sebbene sia consigliato l'uso di Code Signing for, AWS IoT è possibile firmare le immagini del firmware manualmente.

# Creazione di un certificato di firma del codice per Nordic nrf52840-dk
<a name="ota-code-sign-cert-nordic"></a>

**Importante**  <a name="deprecation-message"></a>
Questa integrazione di riferimento è ospitata nel repository Amazon-FreeRTOS che è obsoleto. Ti consigliamo di [iniziare da qui quando crei un nuovo progetto](freertos-getting-started-modular.md). Se disponi già di un progetto FreeRTOS esistente basato sull'ormai obsoleto repository Amazon-FreerTOS, consulta il. [Guida alla migrazione del repository Github di Amazon-FreeRTOS](github-repo-migration.md)

Il Nordic nrf52840-dk supporta un certificato di firma del codice autofirmato con ECDSA. SHA256 

**Nota**  
Per creare un certificato di firma del codice, installare [OpenSSL](https://www.openssl.org/) sul computer. Dopo aver installato OpenSSL, verifica che `openssl` sia assegnato al file eseguibile OpenSSL nel prompt dei comandi o nell'ambiente del terminale.  
Utilizzalo per importare il certificato di firma del codice, la AWS Command Line Interface chiave privata e la catena di certificati. AWS Certificate Manager Per informazioni sull'installazione di AWS CLI, vedere [Installazione](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) di. AWS CLI

1. Nella directory di lavoro, utilizzare il testo seguente per creare un file denominato `cert_config.txt`. Sostituisci *test\$1signer@amazon.com* con il tuo indirizzo email:

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

1. Creare una chiave privata con firma del codice ECDSA:

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

1. Creare un certificato di firma del codice ECDSA:

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

1. Importa il certificato di firma del codice, la chiave privata e la catena di certificati in: AWS Certificate Manager

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

   Questo comando visualizza un ARN per il certificato. L'ARN sarà necessario al momento della creazione di un processo di aggiornamento OTA.
**Nota**  
Questo passaggio è stato scritto partendo dal presupposto che utilizzerai Code Signing per firmare AWS IoT le immagini del firmware. Sebbene sia consigliato l'uso di Code Signing for, AWS IoT è possibile firmare le immagini del firmware manualmente.

# Creazione di un certificato di firma del codice per il simulatore Windows FreerTOS
<a name="ota-code-sign-cert-win"></a>

Il simulatore Windows FreerTOS richiede un certificato di firma del codice con una chiave ECDSA P-256 e hash SHA-256 per eseguire gli aggiornamenti OTA. Se non disponi di un certificato di firma del codice, segui queste fasi per crearne uno.

**Nota**  
Per creare un certificato di firma del codice, installare [OpenSSL](https://www.openssl.org/) sul computer. Dopo aver installato OpenSSL, verifica che `openssl` sia assegnato al file eseguibile OpenSSL nel prompt dei comandi o nell'ambiente del terminale.  
Usa il per importare il certificato di firma del codice AWS Command Line Interface , la chiave privata e la catena di certificati in. AWS Certificate Manager Per informazioni sull'installazione di AWS CLI, vedere [Installazione](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) di. AWS CLI

1. Nella directory di lavoro, utilizzare il testo seguente per creare un file denominato `cert_config.txt`. Sostituisci *test\$1signer@amazon.com* con il tuo indirizzo email:

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

1. Creare una chiave privata con firma del codice ECDSA:

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

1. Creare un certificato di firma del codice ECDSA:

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

1. Importa il certificato di firma del codice, la chiave privata e la catena di certificati in: AWS Certificate Manager

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

   Questo comando visualizza un ARN per il certificato. L'ARN sarà necessario al momento della creazione di un processo di aggiornamento OTA.
**Nota**  
Questo passaggio è stato scritto partendo dal presupposto che utilizzerai Code Signing per firmare AWS IoT le immagini del firmware. Sebbene sia consigliato l'uso di Code Signing for, AWS IoT è possibile firmare le immagini del firmware manualmente.

# Creazione di un certificato di firma del codice per l'hardware personalizzato
<a name="ota-code-sign-cert-other"></a>

Utilizzando un set di strumenti appropriato, è possibile creare una chiave privata e del certificato autofirmato per l'hardware.

Utilizzate il AWS Command Line Interface per importare il certificato di firma del codice, la chiave privata e la catena di certificati. AWS Certificate Manager Per informazioni sull'installazione di AWS CLI, vedere [Installazione](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) di. AWS CLI

Dopo aver creato il certificato di firma del codice, puoi utilizzarlo AWS CLI per importarlo in ACM:

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

L'output di questo comando visualizza un ARN per il certificato. L'ARN sarà necessario al momento della creazione di un processo di aggiornamento OTA.

ACM richiede certificati per utilizzare algoritmi e dimensioni di chiave specifici. Per ulteriori informazioni, consulta la sezione [Prerequisiti per l'importazione di certificati](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-prerequisites.html). Per ulteriori informazioni su ACM, consulta [Importazione](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) di certificati in. AWS Certificate Manager

Devi copiare, incollare e formattare il contenuto del tuo certificato di firma del codice nel `vendors/vendor/boards/board/aws_demos/config_files/ota_demo_config.h` file che fa parte del codice FreerTOS che scaricherai in seguito.

# Concedi l'accesso alla firma del codice per AWS IoT
<a name="code-sign-policy"></a>

Per fornire l’accesso, aggiungi autorizzazioni agli utenti, gruppi o ruoli:
+ Utenti e gruppi in AWS IAM Identity Center:

  Crea un set di autorizzazioni. Segui le istruzioni riportate nella pagina [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) (Creazione di un set di autorizzazioni) nella *Guida per l’utente di AWS IAM Identity Center *.
+ Utenti gestiti in IAM tramite un provider di identità:

  Crea un ruolo per la federazione delle identità. Segui le istruzioni riportate nella pagina [Create a role for a third-party identity provider (federation)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) della *Guida per l’utente IAM*.
+ Utenti IAM:
  + Crea un ruolo che l’utente possa assumere. Segui le istruzioni riportate nella pagina [Create a role for an IAM user](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) della *Guida per l’utente IAM*.
  + (Non consigliato) Collega una policy direttamente a un utente o aggiungi un utente a un gruppo di utenti. Segui le istruzioni riportate nella pagina [Aggiunta di autorizzazioni a un utente (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) nella *Guida per l’utente IAM*.

# Scarica FreerTOS con la libreria OTA
<a name="ota-download-freertos"></a>

Puoi clonare o scaricare FreerTOS da. [GitHub](https://github.com/freertos/freertos) Consultare il file [README.md](https://github.com/freertos/freertos/blob/main/README.md) per le istruzioni.

Per ulteriori informazioni sulla configurazione e l'esecuzione dell'applicazione demo OTA, consulta [Over-the-air aggiorna l'applicazione demo](ota-demo.md).

**Importante**  
In questo argomento, il percorso della directory di download di FreerTOS viene definito come. `freertos`
Gli spazi contenuti nel percorso `freertos` possono causare errori di compilazione. Quando si clona o si copia il repository, assicurarsi che il percorso creato non contenga spazi.
La lunghezza massima di un percorso di file su Microsoft Windows è di 260 caratteri. I lunghi percorsi delle directory di download di FreerTOS possono causare errori di compilazione.
Poiché il codice sorgente può contenere collegamenti simbolici, se utilizzi Windows per estrarre l'archivio, potresti dover:  
Attiva la [modalità sviluppatore](https://docs.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development) o, 
Utilizza una console con privilegi elevati di amministratore.
In questo modo, Windows può creare correttamente collegamenti simbolici quando estrae l'archivio. In caso contrario, i collegamenti simbolici verranno scritti come normali file che contengono i percorsi dei collegamenti simbolici come testo o sono vuoti. Per ulteriori informazioni, consultate il post di blog [Symlinks in Windows 10\$1](https://blogs.windows.com/windowsdeveloper/2016/12/02/symlinks-windows-10/) .  
Se usi Git in Windows, devi abilitare la modalità sviluppatore oppure devi:   
`core.symlinks`Imposta su true con il seguente comando:  

    ```
    git config --global core.symlinks true
    ```
Usa una console con privilegi di amministratore ogni volta che usi un comando git che scrive sul sistema (ad esempio, **git pull****git clone**, e**git submodule update --init --recursive**).

# Prerequisiti per gli aggiornamenti OTA mediante MQTT
<a name="ota-mqtt-freertos"></a>

Questa sezione descrive i requisiti generali per l'utilizzo di MQTT to Perform over-the-air (aggiornamenti OTA).

## Requisiti minimi
<a name="ota-mqtt-freertos-min-requirements"></a>
+ Il firmware del dispositivo deve includere le librerie FreerTOS necessarie (CoreMQTT Agent, aggiornamento OTA e relative dipendenze).
+ È richiesta la versione 1.4.0 o successiva di FreerTOS. Tuttavia, si consiglia di utilizzare la versione più recente quando possibile.

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

A partire dalla versione 201912.00, FreerTOS OTA può utilizzare il protocollo HTTP o MQTT per trasferire le immagini di aggiornamento del firmware dai dispositivi. AWS IoT Se si specificano entrambi i protocolli quando si crea un aggiornamento OTA in FreerTOS, ogni dispositivo determinerà il protocollo utilizzato per trasferire l'immagine. Per ulteriori informazioni, consulta [Prerequisiti per gli aggiornamenti OTA mediante HTTP](ota-http-freertos.md).

Per impostazione predefinita, la configurazione dei protocolli OTA 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)prevede l'utilizzo del protocollo MQTT.

## Configurazioni specifiche del dispositivo
<a name="ota-mqtt-freertos-dev-config"></a>

Nessuna.

## Utilizzo della memoria
<a name="ota-mqtt-freertos-memory"></a>

Quando MQTT viene utilizzato per il trasferimento dei dati, non è necessaria alcuna memoria aggiuntiva per la connessione MQTT perché è condivisa tra operazioni di controllo e dati. 

## Policy dei dispositivi
<a name="ota-mqtt-freertos-device-policy"></a>

Ogni dispositivo che riceve un aggiornamento OTA tramite MQTT deve essere registrato come oggetto in AWS IoT e deve avere una politica allegata come quella elencata qui. Ulteriori informazioni sugli elementi degli oggetti `"Action"` e `"Resource"` sono disponibili in [Operazioni di policy AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html) e [Risorse per operazioni AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-action-resources.html).

**Note**
+ Le `iot:Connect` autorizzazioni consentono al dispositivo di connettersi tramite MQTT AWS IoT .
+ Le `iot:Publish` autorizzazioni `iot:Subscribe` e sugli argomenti dei AWS IoT lavori (`.../jobs/*`) consentono al dispositivo connesso di ricevere notifiche e documenti relativi ai lavori e di pubblicare lo stato di completamento dell'esecuzione di un lavoro.
+ Le `iot:Publish` autorizzazioni `iot:Subscribe` e le autorizzazioni sugli argomenti degli stream AWS IoT OTA (`.../streams/*`) consentono al dispositivo connesso di recuperare i dati di aggiornamento OTA da. AWS IoT Queste autorizzazioni sono necessarie per eseguire gli aggiornamenti del firmware tramite MQTT.
+ Le `iot:Receive` autorizzazioni consentono di AWS IoT Core pubblicare messaggi su tali argomenti sul dispositivo connesso. Questa autorizzazione viene controllata ad ogni recapito di un messaggio MQTT. È possibile utilizzare questa autorizzazione per revocare l'accesso ai client attualmente sottoscritti a un argomento.

# Prerequisiti per gli aggiornamenti OTA mediante HTTP
<a name="ota-http-freertos"></a>

Questa sezione descrive i requisiti generali per l'utilizzo di HTTP to perform updates over-the-air (OTA). A partire dalla versione 201912.00, FreerTOS OTA può utilizzare il protocollo HTTP o MQTT per trasferire le immagini di aggiornamento del firmware dai dispositivi. AWS IoT 

**Nota**  
Sebbene il protocollo HTTP possa essere utilizzato per trasferire l'immagine del firmware, la libreria CoreMQTT Agent è comunque necessaria perché altre interazioni AWS IoT Core utilizzano la libreria CoreMQTT Agent, tra cui l'invio o la ricezione di notifiche di esecuzione del lavoro, documenti di lavoro e aggiornamenti dello stato di esecuzione. 
Quando si specificano entrambi i protocolli MQTT e HTTP per i processi attività di aggiornamento OTA, l'installazione del software dell'agente OTA su ogni singolo dispositivo determina il protocollo utilizzato per trasferire l'immagine del firmware. Per modificare l'agente OTA dal metodo di protocollo predefinito MQTT al protocollo HTTP, puoi cambiare i file di intestazione utilizzati per compilare il codice sorgente FreeRTOS per il dispositivo.

## Requisiti minimi
<a name="ota-http-freertos-min-requirements"></a>
+ Il firmware del dispositivo deve includere le librerie FreerTOS necessarie (CoreMQTT Agent, HTTP, OTA Agent e le relative dipendenze).
+ È necessaria la versione FreerTOS 201912.00 o successiva per modificare la configurazione dei protocolli OTA per abilitare il trasferimento di dati OTA tramite HTTP.

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

Vedi la seguente configurazione dei protocolli OTA nel file [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).

**Per abilitare il trasferimento dei dati OTA su HTTP**

1. Passare da `configENABLED_DATA_PROTOCOLS` a `OTA_DATA_OVER_HTTP`.

1. Quando OTA esegue l'aggiornamento, è possibile specificare entrambi i protocolli in modo che sia possibile utilizzare il protocollo MQTT o HTTP. È possibile impostare il protocollo principale utilizzato dal dispositivo su HTTP modificando `configOTA_PRIMARY_DATA_PROTOCOL` in `OTA_DATA_OVER_HTTP`. 

**Nota**  
HTTP è supportato solo per le operazioni di dati OTA. Per le operazioni di controllo, è necessario utilizzare MQTT.

## Configurazioni specifiche del dispositivo
<a name="ota-http-freertos-device-configuration"></a>

**ESP32**  
A causa di una quantità limitata di RAM, è necessario disattivare BLE quando si attiva HTTP come protocollo per i dati OTA. Nel file [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), modificare `configENABLED_NETWORKS` solo in `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 )
```

## Utilizzo della memoria
<a name="ota-http-freertos-memory"></a>

Quando MQTT viene utilizzato per il trasferimento dei dati, non è necessaria alcuna memoria heap aggiuntiva per la connessione MQTT perché è condivisa tra operazioni di controllo e dati. Tuttavia, l'attivazione dei dati su HTTP richiede memoria heap aggiuntiva. Di seguito sono riportati i dati sull'utilizzo della memoria heap per tutte le piattaforme supportate, calcolati utilizzando l'API FreerTOS`xPortGetFreeHeapSize`. È necessario assicurarsi che ci sia RAM sufficiente per utilizzare la libreria OTA.

****Texas Instruments SF-LAUNCHXL CC3220****  
Operazioni di controllo (MQTT): 12 KB  
Operazioni dei dati (HTTP): 10 KB  
 TI utilizza significativamente meno RAM perché esegue SSL sull'hardware, quindi non utilizza la libreria mbedtls.

****Microchip PIC32 Curiosity MZEF****  
Operazioni di controllo (MQTT): 65 KB  
Operazioni dei dati (HTTP): 43 KB

****Espresso ESP32****  
Operazioni di controllo (MQTT): 65 KB  
Operazioni dei dati (HTTP): 45 KB  
BLE on ESP32 richiede circa 87 KB di RAM. La RAM non è sufficiente per abilitarli tutti, in base alle indicazioni precedenti delle configurazioni specifiche del dispositivo.

****Simulatore Windows****  
Operazioni di controllo (MQTT): 82 KB   
Operazioni dei dati (HTTP): 63 KB 

****Nordic nrf52840-dk****  
HTTP non è supportato.

## Policy dei dispositivi
<a name="ota-http-freertos-device-policy"></a>

Questa policy consente di utilizzare MQTT o HTTP per gli aggiornamenti OTA.

Ogni dispositivo che riceve un aggiornamento OTA utilizzando HTTP deve essere registrato come una cosa in AWS IoT e la cosa deve avere una policy collegata come indicato qui. Ulteriori informazioni sugli elementi degli oggetti `"Action"` e `"Resource"` sono disponibili in [Operazioni di policy AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html) e [Risorse per operazioni AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-action-resources.html).

**Note**
+ Le autorizzazioni `iot:Connect` consentono al dispositivo di connettersi a AWS IoT tramite MQTT. 
+ Le `iot:Publish` autorizzazioni `iot:Subscribe` e le autorizzazioni relative agli argomenti dei AWS IoT lavori (`.../jobs/*`) consentono al dispositivo connesso di ricevere notifiche e documenti relativi ai lavori e di pubblicare lo stato di completamento dell'esecuzione di un lavoro.
+ Le `iot:Receive` autorizzazioni consentono AWS IoT Core di pubblicare messaggi su tali argomenti sul dispositivo attualmente connesso. Questa autorizzazione viene controllata ad ogni recapito di un messaggio MQTT. È possibile utilizzare questa autorizzazione per revocare l'accesso ai client attualmente sottoscritti a un argomento.