Criar um URL assinado usando uma política predefinida - Amazon CloudFront

Criar um URL assinado usando uma política predefinida

Para criar um signed URL usando uma política enlatada, conclua as etapas a seguir.

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 ter mais informações, consulte Reformatar a chave privada (somente .NET e Java).

  2. Concatene os seguintes valores na ordem listada, replicando o formato mostrado neste exemplo de URL assinado:

    https://d111111abcdef8.cloudfront.net/image.jpg?color=red&size=medium&Expires=1357034400&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 .

    • 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 ? mesmo se você não tiver parâmetros de string de consulta.

    3. Seus parâmetros de string de consulta, se houver&

    Este valor é opcional. Se você quiser adicionar seus próprios parâmetros de query string, por exemplo:

    color=red&size=medium

    e depois adicionar os parâmetros após ? e antes do parâmetro Expires. Em algumas circunstâncias raras, pode ser necessário inserir seus parâmetros de query string depois de Key-Pair-Id.

    Importante

    Seus parâmetros não podem ser denominados Expires, Signature nem Key-Pair-Id.

    Se você adicionar seus próprios parâmetros, inclua & depois de cada um deles, inclusive o último.

    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 2013 10h UTC é convertido em 1357034400 no formato de hora do Unix, conforme mostrado no exemplo no início deste tópico. Para usar o horário epoch, use um número inteiro de 32 bits para uma data que pode ser até 2147483647 (19 de janeiro de 2038 às 03:14:07 UTC). Para ter informações sobre UTC, consulte RFC 3339, Date and Time on the Internet: Timestamps.

    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 ter mais informações, consulte Criar uma assinatura para um URL assinado que use uma política predefinida.

    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 ter mais informações, consulte Especificar os assinantes que podem criar URLs e cookies assinados.

Criar uma assinatura para um URL assinado que use uma política predefinida

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

Criar uma declaração de política para um URL assinado que use uma política predefinida

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.

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.

    { "Statement": [ { "Resource": "base URL or stream name", "Condition": { "DateLessThan": { "AWS:EpochTime": ending date and time in Unix time format and UTC } } } ] }
  2. 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

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

Recurso
nota

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 2013 10h UTC é convertido para 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?.

Exemplo de declaração de política para um signed URL que usa uma política padrão

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

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

Criar uma assinatura para um URL assinado que use uma política predefinida

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.

Para obter mais informações e exemplos de como adicionar hash, assinar e codificar a declaração de política, consulte:

Opção 1: Como criar uma assinatura usando uma política enlatada
  1. Use a função de hash SHA-1 e o RSA 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. 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.

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

  3. Codifique a string usando codificação base64 MIME. Para obter mais informações, consulte Section 6.8, Base64 Content-Transfer-Encoding em RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One: Format of Internet Message Bodies.

  4. 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.

    Substitua esses caracteres inválidos Por esses caracteres válidos

    +

    - (hífen)

    =

    _ (sublinhado)

    /

    ~ (til)

  5. 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 para concluir a concatenação das partes dele.