

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Pré-requisitos de atualização do OTA
<a name="ota-prereqs"></a>

Para usar as atualizações over-the-air (OTA), faça o seguinte:
+ Verifique o [Pré-requisitos para atualizações de OTA usando HTTP](ota-http-freertos.md) ou o [Pré-requisitos para atualizações de OTA usando MQTT](ota-mqtt-freertos.md).
+ [Criação de um bucket do Amazon S3 para armazenar a atualização](dg-ota-bucket.md).
+ [Criação de uma função de serviço de atualização de OTA](create-service-role.md).
+ [Criação de uma política de usuário de OTA](create-ota-user-policy.md).
+ [Criação de um certificado de assinatura de código](ota-code-sign-cert.md).
+ Se você estiver usando a assinatura de código para AWS IoT,[Conceda acesso à assinatura de código para AWS IoT](code-sign-policy.md).
+ [Faça download do FreeRTOS com a biblioteca de OTA](ota-download-freertos.md).

# Criação de um bucket do Amazon S3 para armazenar a atualização
<a name="dg-ota-bucket"></a>

Os arquivos de atualização OTA são armazenados em buckets do Amazon S3.

Se você estiver usando a Assinatura de Código para AWS IoT, o comando usado para criar um trabalho de assinatura de código usa um bucket de origem (onde a imagem de firmware não assinada está localizada) e um bucket de destino (onde a imagem de firmware assinada é gravada). Você pode especificar o mesmo bucket para a origem e o destino. Os nomes dos arquivos são alterados para GUIDs que os arquivos originais não sejam sobrescritos.<a name="create-bucket"></a>

**Como criar um bucket do Amazon S3**

1. Faça login no console do Amazon S3 em. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Selecione **Criar bucket**.

1. Insira um **nome para o bucket**.

1. Em **Configurações do bucket para Bloquear acesso público**, mantenha **Bloquear todo o acesso público** selecionado para aceitar as permissões padrão.

1. Em **versionamento de bucket**, selecione **Habilitar** para manter todas as versões no mesmo bucket.

1. Selecione **Criar bucket**.

Para obter mais informações sobre o Amazon S3, consulte o [Guia do usuário do Amazon Simple Storage Service](https://docs.aws.amazon.com/AmazonS3/latest/userguide/).

# Criação de uma função de serviço de atualização de OTA
<a name="create-service-role"></a>

O serviço de atualização OTA assume essa função para criar e gerenciar trabalhos de atualização OTA em seu nome.<a name="create-service-role-steps"></a>

**Para criar uma função de serviço OTA**

1. Faça login no [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. No painel de navegação, escolha **Roles (Funções)**.

1. Selecione **Criar perfil**.

1. Em **Select type of trusted entity** (Selecionar tipo de entidade confiável), selecione **AWS Serviço**.

1. Escolha **IoT** na lista de serviços. AWS 

1. Em **Select your use case** (Selecione seu caso de uso), escolha **IoT**.

1. Escolha **Próximo: Permissões**.

1. Escolha **Next: Tags (Próximo: tags)**.

1. Selecione **Próximo: revisar**.

1. Digite um nome e uma descrição de função e escolha **Create role (Criar função)**.

Para obter mais informações sobre perfis do IAM, consulte [Perfis do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html).

**Importante**  
Para resolver o confuso problema de segurança substituta, você deve seguir as instruções do [guia do AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/cross-service-confused-deputy-prevention.html).<a name="add-ota-permissions"></a>

**Para adicionar permissões de atualização OTA à função de serviço OTA**

1. Na caixa de pesquisa na página do console do IAM, insira o nome do perfil e escolha-o na lista.

1. Escolha **Anexar políticas**.

1. Na caixa **Pesquisar**, digite "AmazonFreeRTOSOTAUpdate“, selecione na lista **AmazonFreeRTOSOTAUpdate**de políticas filtradas e escolha **Anexar política para anexar** a política à sua função de serviço.<a name="add-iam-permissions"></a>

**Para adicionar as permissões necessárias do IAM ao perfil de serviço OTA**

1. Na caixa de pesquisa na página do console do IAM, insira o nome do perfil e escolha-o na lista.

1. Escolha **Add inline policy** (Adicionar política em linha).

1. Selecione a guia **JSON**.

1. Copie e cole o documento de política a seguir na caixa de texto:

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

****  

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

------

   Certifique-se de *your\$1account\$1id* substituir pelo ID AWS da sua conta e *your\$1role\$1name* pelo nome da função de serviço OTA.

1. Selecione **Revisar política**.

1. Insira um nome para a política e escolha **Create policy (Criar política)**.

**nota**  
O procedimento a seguir não será necessário se o nome do bucket do Amazon S3 começar com "afr-ota". Se isso acontecer, a política AWS gerenciada `AmazonFreeRTOSOTAUpdate` já inclui as permissões necessárias. <a name="add-s3-permissions"></a>

****Para adicionar as permissões necessárias do Amazon S3 ao perfil de serviço OTA****

1. Na caixa de pesquisa na página do console do IAM, insira o nome do perfil e escolha-o na lista.

1. Escolha **Add inline policy** (Adicionar política em linha).

1. Selecione a guia **JSON**.

1. Copie e cole o documento de política a seguir na caixa.

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

****  

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

------

   Essa política concede ao perfil de serviço OTA permissão para ler objetos do Amazon S3. Certifique-se de *example-bucket* substituir pelo nome do seu bucket.

1. Selecione **Revisar política**.

1. Insira um nome para a política e escolha **Create policy (Criar política)**.

# Criação de uma política de usuário de OTA
<a name="create-ota-user-policy"></a>

Você deve conceder permissão ao usuário para realizar over-the-air atualizações. O usuário deve ter permissões para:
+ Acessar o bucket do S3 onde suas atualizações de firmware estão armazenadas.
+ Certificados de acesso armazenados em AWS Certificate Manager.
+ Acesse o recurso de entrega de arquivos AWS IoT baseado em MQTT.
+ Acessar as atualizações OTA do FreeRTOS.
+ Acesse AWS IoT empregos.
+ Acessar o IAM.
+ Assinatura de código de acesso para AWS IoT. Consulte [Conceda acesso à assinatura de código para AWS IoT](code-sign-policy.md).
+ Listar as plataformas de hardware FreeRTOS.
+ Marque e desmarque AWS IoT recursos.

Para conceder as permissões necessárias ao seu usuário, consulte [política do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html). Consulte também [Autorização de usuários e serviços em nuvem a usar o AWS IoT Jobs](https://docs.aws.amazon.com/iot/latest/developerguide/iam-policy-users-jobs.html).

Para conceder acesso, adicione as permissões aos seus usuários, grupos ou perfis:
+ Usuários e grupos em Centro de Identidade do AWS IAM:

  Crie um conjunto de permissões. Siga as instruções em [Criação de um conjunto de permissões](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) no *Guia do usuário do Centro de Identidade do AWS IAM *.
+ Usuários gerenciados no IAM com provedor de identidades:

  Crie um perfil para a federação de identidades. Siga as instruções em [Criando um perfil para um provedor de identidades de terceiros (federação)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) no *Guia do Usuário do IAM*.
+ Usuários do IAM:
  + Crie um perfil que seu usuário possa assumir. Siga as instruções em [Criação de um perfil para um usuário do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) no *Guia do usuário do IAM*.
  + (Não recomendado) Vincule uma política diretamente a um usuário ou adicione um usuário a um grupo de usuários. Siga as instruções em [Adição de permissões a um usuário (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) no *Guia do usuário do IAM*.

# Criação de um certificado de assinatura de código
<a name="ota-code-sign-cert"></a>

Para assinar digitalmente imagens de firmware, você precisa de um certificado de assinatura de código e uma chave privada. Para fins de teste, você pode criar um certificado autoassinado e uma chave privada. Para ambientes de produção, adquira um certificado por meio de uma autoridade de certificação (AC) reconhecida.

Plataformas diferentes exigem tipos diferentes de certificados de assinatura de código. A seção a seguir descreve como criar certificados de assinatura de código para diferentes plataformas qualificadas para o FreeRTOS.

**Topics**
+ [Criação de um certificado de assinatura de código para o Texas Instruments SF-LAUNCHXL CC3220](ota-code-sign-cert-ti.md)
+ [Criação de um certificado de assinatura de código para o Espressif ESP32](ota-code-sign-cert-esp.md)
+ [Criação de um certificado de assinatura de código para Nordic nrf52840-dk](ota-code-sign-cert-nordic.md)
+ [Criação de um certificado de assinatura de código para o simulador do Windows do FreeRTOS](ota-code-sign-cert-win.md)
+ [Criação de um certificado de assinatura de código para o hardware personalizado](ota-code-sign-cert-other.md)

# Criação de um certificado de assinatura de código para o Texas Instruments SF-LAUNCHXL CC3220
<a name="ota-code-sign-cert-ti"></a>

**Importante**  <a name="deprecation-message"></a>
Essa integração de referência está hospedada no repositório Amazon-FreeRTOS, que está preterido. Recomendamos [começar aqui](freertos-getting-started-modular.md) ao criar um novo projeto. Se você já tem um projeto FreeRTOS existente baseado no repositório Amazon-FreeRTOS que está preterido, consulte o [Guia de migração do repositório Github do Amazon FreeRTOS](github-repo-migration.md).

O kit de desenvolvimento do microcontrolador sem fio SimpleLink Wi-Fi CC3220 SF Launchpad suporta duas cadeias de certificados para assinatura de código de firmware:
+ Produção (certificado-catálogo)

  Para usar a cadeia de certificados de produção, você deve adquirir um certificado de assinatura de código comercial e usar a [Ferramenta TI Uniflash](http://www.ti.com/tool/UNIFLASH) para definir a placa para o modo de produção.
+ Teste e desenvolvimento (certificado-playground) 

  A cadeia de certificados do playground permite experimentar as atualizações OTA com um certificado de assinatura de código autoassinado.

Use o AWS Command Line Interface para importar seu certificado de assinatura de código, chave privada e cadeia de certificados para. AWS Certificate Manager Para obter mais informações, consulte [ Instalar a AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) no *Guia do usuário da AWS Command Line Interface *.

Baixe e instale a versão mais recente do [SimpleLink CC3220 SDK.](http://www.ti.com/tool/download/SIMPLELINK-CC3220-SDK) Por padrão, os arquivos necessários estão localizados aqui:

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

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

Os certificados no SimpleLink CC3220 SDK estão no formato DER. Para criar um certificado de assinatura de código autoassinado, você deve convertê-lo para o formato PEM.

Siga estas etapas para criar um certificado de assinatura de código vinculado à hierarquia de certificados do playground da Texas Instruments e que AWS Certificate Manager atenda aos critérios de Assinatura de Código. AWS IoT 

**nota**  
Para criar um certificado de assinatura de código, é necessário instalar o [OpenSSL](https://www.openssl.org/) na máquina. Depois de instalar o OpenSSL, verifique se `openssl` está atribuído ao executável do OpenSSL no prompt de comando ou ambiente de terminal.

**Como criar um certificado de assinatura de código autoassinado**

1. Abra um terminal ou prompt de comando com permissões de administrador.

1. No diretório de trabalho, use o texto a seguir para criar um arquivo chamado `cert_config.txt`. *test\$1signer@amazon.com*Substitua pelo seu endereço de e-mail.

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

1. Crie uma chave privada e uma solicitação de assinatura de certificado (CSR):

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

1. Converta a chave privada da CA raiz do playground do Texas Instruments do formato DER para o formato PEM.

   A chave privada da CA raiz do playground do TI está localizada aqui:

   `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. Converta o certificado da CA raiz do playground do Texas Instruments do formato DER para o formato PEM.

   O certificado raiz do playground do TI está localizada aqui:

   `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. Assine o CSR com a CA raiz do 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. Converta seu código de assinatura de certificado (`tisigner.crt.pem`) para o formato DER: 

   ```
   openssl x509 -in tisigner.crt.pem -out tisigner.crt.der -outform DER
   ```
**nota**  
Você escreve o certificado `tisigner.crt.der` na placa de desenvolvimento do TI mais tarde.

1. Importe o certificado de assinatura de código, a chave privada e a cadeia de certificados para: 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
   ```

   Este comando exibe um ARN para o seu certificado. Você precisa deste ARN quando cria um trabalho de atualização OTA.
**nota**  
Esta etapa foi escrita com a suposição de que você usará a Assinatura de Código AWS IoT para assinar suas imagens de firmware. Embora o uso do Code Signing AWS IoT for seja recomendado, você pode assinar suas imagens de firmware manualmente.

# Criação de um certificado de assinatura de código para o Espressif ESP32
<a name="ota-code-sign-cert-esp"></a>

**Importante**  <a name="deprecation-message"></a>
Essa integração de referência está hospedada no repositório Amazon-FreeRTOS, que está preterido. Recomendamos [começar aqui](freertos-getting-started-modular.md) ao criar um novo projeto. Se você já tem um projeto FreeRTOS existente baseado no repositório Amazon-FreeRTOS que está preterido, consulte o [Guia de migração do repositório Github do Amazon FreeRTOS](github-repo-migration.md).

As ESP32 placas Espressif suportam um SHA-256 autoassinado com certificado de assinatura de código ECDSA.

**nota**  
Para criar um certificado de assinatura de código, é necessário instalar o [OpenSSL](https://www.openssl.org/) na máquina. Depois de instalar o OpenSSL, verifique se `openssl` está atribuído ao executável do OpenSSL no prompt de comando ou ambiente de terminal.  
Use o AWS Command Line Interface para importar seu certificado de assinatura de código, chave privada e cadeia de certificados para. AWS Certificate Manager Para obter informações sobre a instalação do AWS CLI, consulte [Instalando AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) o.

1. No diretório de trabalho, use o texto a seguir para criar um arquivo chamado `cert_config.txt`. *test\$1signer@amazon.com*Substitua pelo seu endereço de e-mail:

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

1. Crie uma chave privada de assinatura de código ECDSA:

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

1. Crie um certificado de assinatura de código ECDSA:

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

1. Importe o certificado de assinatura de código, a chave privada e a cadeia de certificados para: AWS Certificate Manager

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

   Este comando exibe um ARN para o seu certificado. Você precisa deste ARN quando cria um trabalho de atualização OTA.
**nota**  
Esta etapa foi escrita com a suposição de que você usará a Assinatura de Código AWS IoT para assinar suas imagens de firmware. Embora o uso do Code Signing AWS IoT for seja recomendado, você pode assinar suas imagens de firmware manualmente.

# Criação de um certificado de assinatura de código para Nordic nrf52840-dk
<a name="ota-code-sign-cert-nordic"></a>

**Importante**  <a name="deprecation-message"></a>
Essa integração de referência está hospedada no repositório Amazon-FreeRTOS, que está preterido. Recomendamos [começar aqui](freertos-getting-started-modular.md) ao criar um novo projeto. Se você já tem um projeto FreeRTOS existente baseado no repositório Amazon-FreeRTOS que está preterido, consulte o [Guia de migração do repositório Github do Amazon FreeRTOS](github-repo-migration.md).

O Nordic nrf52840-dk suporta um certificado autoassinado com assinatura de código ECDSA. SHA256 

**nota**  
Para criar um certificado de assinatura de código, instale o [OpenSSL](https://www.openssl.org/) na máquina. Depois de instalar o OpenSSL, verifique se `openssl` está atribuído ao executável do OpenSSL no prompt de comando ou ambiente de terminal.  
Use o AWS Command Line Interface para importar seu certificado de assinatura de código, chave privada e cadeia de certificados para. AWS Certificate Manager Para obter informações sobre a instalação do AWS CLI, consulte [Instalando AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) o.

1. No diretório de trabalho, use o texto a seguir para criar um arquivo chamado `cert_config.txt`. *test\$1signer@amazon.com*Substitua pelo seu endereço de e-mail:

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

1. Crie uma chave privada de assinatura de código ECDSA:

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

1. Crie um certificado de assinatura de código ECDSA:

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

1. Importe o certificado de assinatura de código, a chave privada e a cadeia de certificados para: AWS Certificate Manager

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

   Este comando exibe um ARN para o seu certificado. Você precisa deste ARN quando cria um trabalho de atualização OTA.
**nota**  
Esta etapa foi escrita com a suposição de que você usará a Assinatura de Código AWS IoT para assinar suas imagens de firmware. Embora o uso do Code Signing AWS IoT for seja recomendado, você pode assinar suas imagens de firmware manualmente.

# Criação de um certificado de assinatura de código para o simulador do Windows do FreeRTOS
<a name="ota-code-sign-cert-win"></a>

O simulador do Windows do FreeRTOS exige um certificado de assinatura de código com uma chave ECDSA P-256 e o hash SHA-256 para executar atualizações OTA. Se você não tiver um certificado de assinatura de código, siga estas etapas para criar um:

**nota**  
Para criar um certificado de assinatura de código, é necessário instalar o [OpenSSL](https://www.openssl.org/) na máquina. Depois de instalar o OpenSSL, verifique se `openssl` está atribuído ao executável do OpenSSL no prompt de comando ou ambiente de terminal.  
Use o AWS Command Line Interface para importar seu certificado de assinatura de código, chave privada e cadeia de certificados para. AWS Certificate Manager Para obter informações sobre a instalação do AWS CLI, consulte [Instalando AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) o.

1. No diretório de trabalho, use o texto a seguir para criar um arquivo chamado `cert_config.txt`. *test\$1signer@amazon.com*Substitua pelo seu endereço de e-mail:

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

1. Crie uma chave privada de assinatura de código ECDSA:

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

1. Crie um certificado de assinatura de código ECDSA:

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

1. Importe o certificado de assinatura de código, a chave privada e a cadeia de certificados para: AWS Certificate Manager

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

   Este comando exibe um ARN para o seu certificado. Você precisa deste ARN quando cria um trabalho de atualização OTA.
**nota**  
Esta etapa foi escrita com a suposição de que você usará a Assinatura de Código AWS IoT para assinar suas imagens de firmware. Embora o uso do Code Signing AWS IoT for seja recomendado, você pode assinar suas imagens de firmware manualmente.

# Criação de um certificado de assinatura de código para o hardware personalizado
<a name="ota-code-sign-cert-other"></a>

Usando um conjunto de ferramentas apropriado, crie um certificado autoassinado e uma chave privada para o hardware.

Use o AWS Command Line Interface para importar seu certificado de assinatura de código, chave privada e cadeia de certificados para. AWS Certificate Manager Para obter informações sobre a instalação do AWS CLI, consulte [Instalando AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) o.

Depois de criar seu certificado de assinatura de código, você pode usar o AWS CLI para importá-lo para o ACM:

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

A saída desse comando exibe um ARN para o seu certificado. Você precisa deste ARN quando cria um trabalho de atualização OTA.

O ACM exige certificados para usar algoritmos e tamanhos de chaves específicos. Para obter mais informações, consulte [Pré-requisitos para importar certificados](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate-prerequisites.html). Para obter mais informações sobre o ACM, consulte [Importação de certificados para o AWS Certificate Manager](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html).

Você deve copiar, colar e formatar o conteúdo do certificado de assinatura de código no arquivo `vendors/vendor/boards/board/aws_demos/config_files/ota_demo_config.h` que faz parte do código do FreeRTOS que você obterá por download posteriormente.

# Conceda acesso à assinatura de código para AWS IoT
<a name="code-sign-policy"></a>

Para conceder acesso, adicione as permissões aos seus usuários, grupos ou perfis:
+ Usuários e grupos em Centro de Identidade do AWS IAM:

  Crie um conjunto de permissões. Siga as instruções em [Criação de um conjunto de permissões](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html) no *Guia do usuário do Centro de Identidade do AWS IAM *.
+ Usuários gerenciados no IAM com provedor de identidades:

  Crie um perfil para a federação de identidades. Siga as instruções em [Criando um perfil para um provedor de identidades de terceiros (federação)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html) no *Guia do Usuário do IAM*.
+ Usuários do IAM:
  + Crie um perfil que seu usuário possa assumir. Siga as instruções em [Criação de um perfil para um usuário do IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html) no *Guia do usuário do IAM*.
  + (Não recomendado) Vincule uma política diretamente a um usuário ou adicione um usuário a um grupo de usuários. Siga as instruções em [Adição de permissões a um usuário (console)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) no *Guia do usuário do IAM*.

# Faça download do FreeRTOS com a biblioteca de OTA
<a name="ota-download-freertos"></a>

Você pode clonar ou baixar FreeRTOS em. [GitHub](https://github.com/freertos/freertos) Consulte o arquivo [README.md](https://github.com/freertos/freertos/blob/main/README.md) para obter instruções.

Para obter informações sobre como configurar e executar a aplicação de demonstração OTA, consulte [Over-the-air atualiza o aplicativo de demonstração](ota-demo.md).

**Importante**  
Neste tópico, o caminho para o diretório de download do FreeRTOS é chamado de `freertos`.
Caracteres de espaço no caminho `freertos` podem causar falhas na compilação. Ao clonar ou copiar o repositório, verifique se o caminho criado não contém caracteres de espaço.
O tamanho máximo de um caminho de arquivo no Microsoft Windows é 260 caracteres. Caminhos longos de diretório de download do FreeRTOS podem causar falhas de compilação.
O código-fonte pode conter links simbólicos, por isso se estiver usando o Windows para extrair o arquivo, talvez seja necessário:  
Habilitar o [modo Desenvolvedor](https://docs.microsoft.com/en-us/windows/apps/get-started/enable-your-device-for-development) ou, 
Usar um console com privilégios de administrador.
Dessa forma, o Windows pode criar links simbólicos adequadamente ao extrair o arquivamento. Caso contrário, os links simbólicos serão gravados como arquivos comuns que contêm os caminhos dos links simbólicos como texto ou estão vazios. Para obter mais informações, consulte a entrada no blog [ Symlinks no Windows 10\$1](https://blogs.windows.com/windowsdeveloper/2016/12/02/symlinks-windows-10/).  
Se você usa o Git no Windows, você deve habilitar o modo Desenvolvedor ou deve:   
Definir `core.symlinks` como verdadeiro com o seguinte comando:  

    ```
    git config --global core.symlinks true
    ```
Use um console com privilégios de administrador sempre que usar um comando git que grava no sistema (por exemplo, **git pull**, **git clone**, e **git submodule update --init --recursive**).

# Pré-requisitos para atualizações de OTA usando MQTT
<a name="ota-mqtt-freertos"></a>

Esta seção descreve os requisitos gerais para o uso do MQTT para executar over-the-air (atualizações OTA).

## Requisitos mínimos
<a name="ota-mqtt-freertos-min-requirements"></a>
+ O firmware do dispositivo deve incluir as bibliotecas do FreeRTOS necessárias (coreMQTT, agente OTA e suas dependências).
+ A versão 1.4.0 ou posterior do FreeRTOS é necessária. Recomendamos usar a versão mais recente sempre que possível.

## Configurações
<a name="ota-mqtt-freertos-config"></a>

A partir da versão 2019.12.00, o FreeRTOS OTA pode usar o protocolo HTTP ou MQTT para transferir imagens de atualização de firmware para dispositivos. AWS IoT Se você especificar os dois protocolos ao criar uma atualização OTA no FreeRTOS, cada dispositivo determinará o protocolo usado para transferir a imagem. Consulte [Pré-requisitos para atualizações de OTA usando HTTP](ota-http-freertos.md) para obter mais informações.

Por padrão, a configuração de protocolos OTA em [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) é usar o protocolo MQTT.

## Configurações específicas do dispositivo
<a name="ota-mqtt-freertos-dev-config"></a>

Nenhum.

## Uso de memória
<a name="ota-mqtt-freertos-memory"></a>

Quando o MQTT for usado para transferência de dados, não será necessária nenhuma memória adicional para a conexão MQTT, pois ela é compartilhada entre operações de controle e de dados. 

## Política de dispositivo
<a name="ota-mqtt-freertos-device-policy"></a>

Cada dispositivo que recebe uma atualização OTA usando o MQTT deve ser registrado como um item AWS IoT e deve ter uma política anexada, como a listada aqui. Você pode encontrar mais informações sobre os itens nos objetos `"Resource"` e `"Action"` em [Ações da política principal do AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html) e [Recursos da ação principal do AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-action-resources.html).

**Observações**
+ As `iot:Connect` permissões permitem que seu dispositivo se conecte AWS IoT ao MQTT.
+ As `iot:Publish` permissões `iot:Subscribe` e sobre os tópicos de AWS IoT trabalhos (`.../jobs/*`) permitem que o dispositivo conectado receba notificações e documentos de trabalho e publique o estado de conclusão da execução de um trabalho.
+ As `iot:Publish` permissões `iot:Subscribe` e sobre os tópicos de fluxos AWS IoT OTA (`.../streams/*`) permitem que o dispositivo conectado busque dados de atualização do OTA de. AWS IoT Essas permissões são necessárias para executar atualizações de firmware pelo MQTT.
+ As `iot:Receive` permissões AWS IoT Core permitem publicar mensagens sobre esses tópicos no dispositivo conectado. Essa permissão é verificada em cada entrega de uma mensagem de MQTT. Você pode usar essa permissão para revogar o acesso a clientes que estão inscritos em um tópico atualmente.

# Pré-requisitos para atualizações de OTA usando HTTP
<a name="ota-http-freertos"></a>

Esta seção descreve os requisitos gerais para usar HTTP para realizar atualizações over-the-air (OTA). A partir da versão 2019.12.00, o FreeRTOS OTA pode usar o protocolo HTTP ou MQTT para transferir imagens de atualização de firmware para dispositivos. AWS IoT 

**nota**  
Embora o protocolo HTTP possa ser usado para transferir a imagem do firmware, a biblioteca do CoreMQTT Agent ainda é necessária porque outras interações AWS IoT Core usam a biblioteca do CoremQTT Agent, incluindo o envio ou recebimento de notificações de execução de tarefas, documentos de tarefas e atualizações de status de execução. 
Ao especificar os protocolos MQTT e HTTP para o trabalho de atualização de OTA, a configuração do software do agente OTA em cada dispositivo individual determina o protocolo usado para transferir a imagem de firmware. Para alterar o agente OTA do método de protocolo MQTT padrão para o protocolo HTTP, modifique os arquivos de cabeçalho usados para compilar o código-fonte do FreeRTOS para o dispositivo.

## Requisitos mínimos
<a name="ota-http-freertos-min-requirements"></a>
+ O firmware do dispositivo deve incluir as bibliotecas do FreeRTOS necessárias (agente coreMQTT, HTTP, agente OTA e suas dependências).
+ A versão 201912.00 ou posterior o FreeRTOS é necessária para alterar a configuração de protocolos OTA a fim de habilitar a transferência de dados OTA via HTTP.

## Configurações
<a name="ota-http-freertos-config"></a>

Consulte a seguinte configuração dos protocolos OTA no arquivo [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).

**Para habilitar a transferência de dados OTA via HTTP**

1. Fazer `configENABLED_DATA_PROTOCOLS` alteração `OTA_DATA_OVER_HTTP`.

1. Quando o OTA é atualizado, você pode especificar ambos os protocolos para que o protocolo MQTT ou HTTP possa ser usado. Você pode definir o protocolo primário usado pelo dispositivo para HTTP alterando `configOTA_PRIMARY_DATA_PROTOCOL` para `OTA_DATA_OVER_HTTP`. 

**nota**  
HTTP só é compatível com operações de dados OTA. Para operações de controle, você deve usar MQTT.

## Configurações específicas do dispositivo
<a name="ota-http-freertos-device-configuration"></a>

**ESP32**  
Devido a uma quantidade limitada de RAM, você deve desativar o BLE quando habilitar HTTP como protocolo de dados OTA. No arquivo [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), altere `configENABLED_NETWORKS` para `AWSIOT_NETWORK_TYPE_WIFI` somente.  

```
/**
     * @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 )
```

## Uso de memória
<a name="ota-http-freertos-memory"></a>

Quando MQTT for usado para transferência de dados, não será necessária nenhuma memória de heap adicional para a conexão MQTT, pois ela é compartilhada entre controle e operações de dados. No entanto, é necessário ter memória de heap adicional para habilitar dados via HTTP. A seguir estão os dados de uso de memória de heap para todas as plataformas compatíveis, calculados usando a API `xPortGetFreeHeapSize` do FreeRTOS. Assegure-se de que há RAM suficiente para usar a biblioteca OTA.

****Texas Instruments CC3220 SF-LAUNCHXL****  
Operações de controle (MQTT): 12 KB  
Operações de dados (HTTP): 10 KB  
 TI usa significativamente menos RAM porque faz SSL em hardware, então não usa a biblioteca mbedtls.

****Microchip Curiosity PIC32 MZEF****  
Operações de controle (MQTT): 65 KB  
Operações de dados (HTTP): 43 KB

****Expressivo ESP32****  
Operações de controle (MQTT): 65 KB  
Operações de dados (HTTP): 45 KB  
BLE on ESP32 ocupa cerca de 87 KB de RAM. Não há RAM suficiente para habilitar todos eles, o que é mencionado nas configurações específicas do dispositivo acima.

****Windows Simulator****  
Operações de controle (MQTT): 82 KB   
Operações de dados (HTTP): 63 KB 

****Nordic nrf52840-dk****  
Não há suporte para HTTP.

## Política de dispositivo
<a name="ota-http-freertos-device-policy"></a>

Esta política permite usar MQTT ou HTTP para atualizações de OTA.

Cada dispositivo que recebe uma atualização OTA usando HTTP deve ser registrado como uma coisa no AWS IoT , e a coisa deve ter uma política anexada, como a listada aqui. Você pode encontrar mais informações sobre os itens nos objetos `"Resource"` e `"Action"` em [Ações da política principal do AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html) e [Recursos da ação principal do AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-action-resources.html).

**Observações**
+ As permissões do `iot:Connect` permitem que o dispositivo seja conectado ao AWS IoT pelo MQTT. 
+ As `iot:Publish` permissões `iot:Subscribe` e sobre os tópicos de AWS IoT trabalhos (`.../jobs/*`) permitem que o dispositivo conectado receba notificações e documentos de trabalho e publique o estado de conclusão da execução de um trabalho.
+ As `iot:Receive` permissões AWS IoT Core permitem publicar mensagens sobre esses tópicos no dispositivo conectado atual. Essa permissão é verificada em cada entrega de uma mensagem de MQTT. Você pode usar essa permissão para revogar o acesso a clientes que estão inscritos em um tópico atualmente.