

# Criar um URL assinado usando uma política predefinida
<a name="private-content-creating-signed-url-canned-policy"></a>

Para criar um signed URL usando uma política enlatada, conclua as etapas a seguir.<a name="private-content-creating-signed-url-canned-policy-procedure"></a>

**Para criar um signed URL usando uma política padrão**

1. Se você estiver usando o .NET ou Java para criar signed URLs e não tiver reformatado a chave privada do seu par de chaves para do formato padrão .pem para um formato compatível com o .NET ou Java, faça isso agora. Para obter mais informações, consulte [Reformatar a chave privada (somente .NET e Java)](private-content-trusted-signers.md#private-content-reformatting-private-key).

1. Concatene os valores a seguir. Você pode usar o formato neste exemplo de URL assinado. 

   ```
   https://d111111abcdef8.cloudfront.net/image.jpg?color=red&size=medium&Expires=1767290400&Signature=nitfHRCrtziwO2HwPfWw~yYDhUF5EwRunQA-j19DzZrvDh6hQ73lDx~-ar3UocvvRQVw6EkC~GdpGQyyOSKQim-TxAnW7d8F5Kkai9HVx0FIu-5jcQb0UEmatEXAMPLE3ReXySpLSMj0yCd3ZAB4UcBCAqEijkytL6f3fVYNGQI6&Key-Pair-Id=K2JCJMDEHXQW5F
   ```

   Remova todos os espaços vazios (inclusive caracteres de nova linha e de tabulação). Pode ser necessário incluir caracteres de escape na string do código do aplicativo. Todos os valores têm um tipo de `String`.  
**1. *URL base do arquivo***  
O URL base é o URL do CloudFront usado para acessar o arquivo se você não estivesse usando signed URLs, inclusive seus próprios parâmetros de query string, se houver. No exemplo anterior, o URL de base é `https://d111111abcdef8.cloudfront.net/image.jpg`. Para mais informações sobre o formato dos URLs para distribuições, consulte [Personalizar o formato do URL para arquivos no CloudFront](LinkFormat.md).  
   + O URL do CloudFront a seguir é para um arquivo de imagem em uma distribuição (usando o nome de domínio do CloudFront). Observe que `image.jpg` está em um diretório `images`. O caminho para o arquivo no URL deve corresponder ao caminho para o arquivo no servidor HTTP ou no bucket do Amazon S3.

     `https://d111111abcdef8.cloudfront.net/images/image.jpg`
   + O seguinte URL do CloudFront inclui uma query string:

     `https://d111111abcdef8.cloudfront.net/images/image.jpg?size=large`
   + Os URLs do CloudFront a seguir são para arquivos de imagem em uma distribuição. Ambos usam um nome de domínio alternativo. O segundo inclui uma string de consulta:

     `https://www.example.com/images/image.jpg`

     `https://www.example.com/images/image.jpg?color=red`
   + O URL do CloudFront a seguir é para um arquivo de imagem em uma distribuição que usa um nome de domínio alternativo e o protocolo HTTPS:

     `https://www.example.com/images/image.jpg`  
** 2. `?`**  
O `?` indica que os parâmetros de string de consulta seguem o URL base. Inclua o `?` mesmo que você não especifique nenhum parâmetro de consulta.  
Você pode especificar os parâmetros de consulta a seguir em qualquer ordem.  
**3. *Seus parâmetros de string de consulta, se houver*`&`**  
(Opcional) Você pode inserir seus próprios parâmetros de string de consulta. Para fazer isso, adicione um e comercial (`&`) entre cada um, como `color=red&size=medium`. Você pode especificar parâmetros de string de consulta em qualquer ordem dentro do URL.  
Seus parâmetros de string de consulta não podem ser especificados como `Expires`, `Signature` ou `Key-Pair-Id`.  
** 4. `Expires=`*data e hora no formato de hora do Unix (em segundos) e no Tempo Universal Coordenado (UTC)***  
A data e a hora em que você deseja que o URL pare de permitir acesso ao arquivo.  
Especifique a data e hora de expiração no formato de hora do Unix (em segundos) e no Tempo Universal Coordenado (UTC). Por exemplo, 1.º de janeiro de 2026 10h UTC é convertido em `1767290400` no formato de hora do Unix, conforme mostrado no exemplo no início deste tópico.   
Para usar o tempo de época, especifique um número inteiro de 64 bits para uma data que não seja posterior a `9223372036854775807` (sexta-feira, 11 de abril de 2262 às 23:47:16.854 UTC).  
  
Para ter informações sobre UTC, consulte [RFC 3339, Date and Time on the Internet: Timestamps](https://tools.ietf.org/html/rfc3339).  
** 5. `&Signature=`*versão assinada e com hash da declaração de política***  
Uma versão assinada, com hash e codificação base64 da declaração de política do JSON. Para obter mais informações, consulte [Criar uma assinatura para um URL assinado que use uma política predefinida](#private-content-canned-policy-creating-signature).  
** 6. `&Key-Pair-Id=`*ID da chave pública do CloudFront cuja chave privada correspondente está sendo usada para gerar a assinatura***  
O ID de uma chave pública do CloudFront, por exemplo, `K2JCJMDEHXQW5F`. O ID da chave pública informa ao CloudFront qual chave pública deve ser usada para validar o signed URL. O CloudFront compara as informações da assinatura com as informações da declaração de política para verificar se o URL não foi adulterado.  
Essa chave pública deve pertencer a um grupo de chaves que seja um signatário confiável na distribuição. Para obter mais informações, consulte [Especificar os assinantes que podem criar URLs e cookies assinados](private-content-trusted-signers.md).

## Criar uma assinatura para um URL assinado que use uma política predefinida
<a name="private-content-canned-policy-creating-signature"></a>

Para criar a assinatura de um URL que use uma política predefinida, siga estes procedimentos.

**Topics**
+ [Criar uma declaração de política para um URL assinado que use uma política predefinida](#private-content-canned-policy-creating-policy-statement)
+ [Criar uma assinatura para um URL assinado que use uma política predefinida](#private-content-canned-policy-signing-policy-statement)

### Criar uma declaração de política para um URL assinado que use uma política predefinida
<a name="private-content-canned-policy-creating-policy-statement"></a>

Ao criar um signed URL usando uma política padrão, o parâmetro `Signature` será uma versão assinada e com hash de uma declaração de política. Para signed URLs que usam uma política padrão, a declaração de política não é incluída no URL, como é feito nos signed URLs que usam uma política personalizada. Para criar a declaração de política, siga o procedimento abaixo.<a name="private-content-canned-policy-creating-policy-statement-procedure"></a>

**Para criar a declaração de política para um signed URL que usa uma política padrão**

1. Crie a declaração de política usando o formato JSON a seguir e a codificação de caracteres UTF-8. Inclua todas as pontuações e outros valores literais exatamente como especificado. Para obter informações sobre os parâmetros `Resource` e `DateLessThan`, consulte [Valores especificados na declaração de política para um signed URL que usa uma política padrão](#private-content-canned-policy-statement-values).

   ```
   {
       "Statement": [
           {
               "Resource": "base URL or stream name",
               "Condition": {
                   "DateLessThan": {
                       "AWS:EpochTime": ending date and time in Unix time format and UTC
                   }
               }
           }
       ]
   }
   ```

1. Remova todas os espaços em branco (inclusive caracteres de nova linha e de tabulação) da declaração de política. Pode ser necessário incluir caracteres de escape na string do código do aplicativo.

#### Valores especificados na declaração de política para um signed URL que usa uma política padrão
<a name="private-content-canned-policy-statement-values"></a>

Ao criar uma declaração de política para uma política padrão, especifique os valores a seguir.

**Recurso**  
Você pode especificar apenas um valor para `Resource`.
O URL base, com suas query strings, se houver, sem os parâmetros `Expires`, `Signature` e `Key-Pair-Id` do CloudFront, por exemplo:  
`https://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes`  
Observe o seguinte:  
+ **Protocolo**: o valor deve começar com `http://` ou `https://`.
+ **Parâmetros de query string** :se você não tiver query strings, omita o ponto de interrogação.
+ **Nomes de domínio alternativos**: se especificar um nome de domínio alternativo (CNAME) no URL, você deverá especificá-lo ao fazer referência ao arquivo na sua página da web ou aplicação. Não especifique o URL do Amazon S3 do objeto.

**DateLessThan**  
A data e hora de expiração do URL no formato de hora do Unix (em segundos) e no Tempo Universal Coordenado (UTC). Por exemplo, 1.º de janeiro de 2026 10h UTC é convertido em 1357034400 no formato de hora do Unix.  
Esse valor deve corresponder ao valor do parâmetro de query string `Expires` do signed URL. Não coloque os valores entre aspas.  
Para obter mais informações, consulte [Quando o CloudFront confere a data e hora de validade de um URL assinado?](private-content-signed-urls.md#private-content-check-expiration).

#### Exemplo de declaração de política para um signed URL que usa uma política padrão
<a name="private-content-canned-policy-creating-policy-statement-example"></a>

Ao usar o seguinte exemplo de declaração de política em um URL, assinado, um usuário pode acessar o arquivo `https://d111111abcdef8.cloudfront.net/horizon.jpg` até 1.º de janeiro de 2026, 10h UTC:

```
{
    "Statement": [
        {
            "Resource": "https://d111111abcdef8.cloudfront.net/horizon.jpg?size=large&license=yes",
            "Condition": {
                "DateLessThan": {
                    "AWS:EpochTime": 1767290400
                }
            }
        }
    ]
}
```

### Criar uma assinatura para um URL assinado que use uma política predefinida
<a name="private-content-canned-policy-signing-policy-statement"></a>

Para criar o valor para o parâmetro `Signature` em um signed URL, assine e adicione um hash à declaração de política criada em [Criar uma declaração de política para um URL assinado que use uma política predefinida](#private-content-canned-policy-creating-policy-statement).

Para obter mais informações e exemplos de como adicionar hash, assinar e codificar a declaração de política, consulte:
+ [Comandos do Linux e OpenSSL para criptografia e codificação base64](private-content-linux-openssl.md)
+ [Exemplos de código para criar uma assinatura para um signed URL](PrivateCFSignatureCodeAndExamples.md)<a name="private-content-canned-policy-creating-signature-download-procedure"></a>

**Opção 1: Como criar uma assinatura usando uma política enlatada**

1. Use a função de hash SHA-1 e a chave privada RSA ou ECDSA gerada para assinar e adicionar um hash à declaração de política criada no procedimento [Para criar a declaração de política para um signed URL que usa uma política padrão](#private-content-canned-policy-creating-policy-statement-procedure). Use a versão da declaração de política que não inclui mais espaços em branco.

   Para a chave privada exigida pela função hash, use uma chave privada que tenha a chave pública em um grupo de chaves confiável ativo para a distribuição.
**nota**  
O método usado para assinar e adicionar um hash à declaração de política depende da sua linguagem de programação e plataforma. Para obter o código de exemplo, consulte [Exemplos de código para criar uma assinatura para um signed URL](PrivateCFSignatureCodeAndExamples.md).

1. Remova os espaços em branco (inclusive caracteres de nova linha e de tabulação) da string assinada e com hash.

1. Codifique a string usando codificação base64 MIME. Para obter mais informações, consulte [Section 6.8, Base64 Content-Transfer-Encoding](https://tools.ietf.org/html/rfc2045#section-6.8) em *RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One: Format of Internet Message Bodies*.

1. Substitua os caracteres inválidos da query string de um URL por caracteres válidos. A tabela a seguir indica os caracteres válidos e inválidos.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/AmazonCloudFront/latest/DeveloperGuide/private-content-creating-signed-url-canned-policy.html)

1. Inclua o valor resultante no seu signed URL depois de `&Signature=` e volte para [Para criar um signed URL usando uma política padrão](#private-content-creating-signed-url-canned-policy-procedure) para concluir a concatenação das partes dele.