Creación de una URL firmada mediante una política predefinida - Amazon CloudFront

Creación de una URL firmada mediante una política predefinida

Para crear una URL firmada mediante una política predefinida, complete los pasos siguientes.

Para crear una URL firmada mediante una política predefinida
  1. Si utiliza. NET o Java para crear URL firmadas y no ha reformateado la clave privada del par de claves del formato .pem predeterminado a un formato compatible con .NET o con Java, hágalo ahora. Para obtener más información, consulte Volver a formatear la clave privada (solo .NET y Java).

  2. Concatene los siguientes valores en el orden indicado, replicando el formato que se muestra en este ejemplo de URL firmada:

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

    Elimine todos los espacios vacíos (incluidos tabuladores y caracteres de línea nueva). Es posible que tenga que incluir caracteres de escape en la cadena del código de la aplicación. Todos los valores tienen un tipo de String.

    1. URL base del archivo

    La URL base es la URL de CloudFront que utilizaría para acceder al archivo si no utilizara las URL firmadas, incluidos los parámetros de la cadena de consulta propios, si los hay. En el ejemplo anterior, la URL base es https://d111111abcdef8.cloudfront.net/image.jpg. Para obtener más información acerca del formato de las URL para distribuciones, consulte Personalización del formato de URL para archivos en CloudFront.

    • La siguiente URL de CloudFront es para un archivo de imagen en una distribución (utilizando el nombre de dominio de CloudFront). image.jpg está en un directorio images. La ruta hacia el archivo de la URL debe coincidir con la ruta hacia el archivo del servidor HTTP o del bucket de Amazon S3.

      https://d111111abcdef8.cloudfront.net/images/image.jpg

    • La siguiente URL de CloudFront incluye una cadena de consulta:

      https://d111111abcdef8.cloudfront.net/images/image.jpg?size=large

    • Las siguientes URL de CloudFront corresponden a archivos de imagen de una distribución. Ambas usan un nombre de dominio alternativo. La segunda incluye una cadena de consulta:

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

      https://www.example.com/images/image.jpg?color=red

    • La siguiente URL de CloudFront corresponde a un archivo de imagen de una distribución que utiliza un nombre de dominio alternativo y el protocolo HTTPS:

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

    2. ?

    ? indica que los parámetros de la cadena de consulta siguen a la URL base. Incluya ? aunque no tenga sus propios parámetros de cadena de consulta.

    3. Sus parámetros de cadena de consulta, de haberlos&

    Este valor es opcional. Si desea añadir sus propios parámetros de cadena de consulta, por ejemplo:

    color=red&size=medium

    añada los parámetros después de ? y antes del parámetro Expires. En algún caso poso frecuente, posiblemente tenga que añadir los parámetros de cadena de consulta después de Key-Pair-Id.

    importante

    Los parámetros no podrán llamarse Expires, Signature ni Key-Pair-Id.

    Si añade sus propios parámetros, incluya un & después de cada uno, incluso después del último.

    4. Expires=fecha y hora en formato de tiempo Unix (en segundos), en hora universal coordinada (UTC)

    La fecha y la hora en las que desea que la URL deje de permitir el acceso al archivo.

    Especifique la fecha y la hora de vencimiento en formato de tiempo Unix (en segundos) y hora universal coordinada (UTC). Por ejemplo, 1 de enero de 2013 a las 10:00 am UTC pasa a se 1357034400 en formato de tiempo Unix, como se muestra en el ejemplo al principio de este tema. Para utilizar el formato de tiempo Unix, use un entero de 32 bits para una fecha que no puede ser posterior a 2147483647 (19 de enero de 2038 a las 03:14:07 UTC). Para obtener información acerca de UTC, consulte RFC 3339, fecha y hora en Internet: marcas temporales.

    5. &Signature=versión firmada y a la que se le ha aplicado una función hash de la instrucción de política

    Una versión firmada, a la que se le ha aplicado una función hash y codificada en base64 de la instrucción de política JSON. Para obtener más información, consulte Creación de una firma para una URL firmada que utiliza una política predefinida.

    6. &Key-Pair-Id=ID de clave pública para la clave pública de CloudFront cuya clave privada correspondiente va a utilizar para generar la firma

    El ID de una clave pública de CloudFront, por ejemplo, K2JCJMDEHXQW5F. El ID de clave pública indica a CloudFront qué clave pública usar para validar la URL firmada. CloudFront compara la información de la firma con la información de la instrucción de política para comprobar que la URL no se ha manipulado.

    Esta clave pública debe pertenecer a un grupo de claves que tiene un signatario de confianza en la distribución. Para obtener más información, consulte Especificación de los signatarios que pueden crear URL firmadas y cookies firmadas.

Creación de una firma para una URL firmada que utiliza una política predefinida

Para crear la firma para una URL firmada que utilice una política predefinida, realice los procedimientos indicados a continuación.

Creación de una instrucción de política para una URL firmada que utiliza una política predefinida

Al crear una URL firmada mediante una política predefinida, el parámetro Signature es una versión firmada y a la que se le ha aplicado una función hash de una instrucción de política. En el caso de URL firmadas que utilizan una política predefinida, la instrucción de política no se incluye en la URL, a diferencia de las URL firmadas que utilizan una política personalizada. Para crear la instrucción de política, siga el procedimiento que se indica a continuación.

Para crear una instrucción de política para una URL firmada que use una política predefinida
  1. Cree la instrucción de política utilizando el siguiente formato JSON y codificación de caracteres UTF-8. Incluya toda la puntuación y otros valores literalmente, tal como se especifica. Para obtener más información acerca de los parámetros Resource y DateLessThan, consulte Valores que se especifican en la instrucción de política de una URL firmada que utiliza una política predefinida.

    { "Statement": [ { "Resource": "base URL or stream name", "Condition": { "DateLessThan": { "AWS:EpochTime": ending date and time in Unix time format and UTC } } } ] }
  2. Elimine todos los espacios vacíos (incluidos tabuladores y caracteres de línea nueva) de la instrucción de la política. Es posible que tenga que incluir caracteres de escape en la cadena del código de la aplicación.

Valores que se especifican en la instrucción de política de una URL firmada que utiliza una política predefinida

Al crear una instrucción de política para una política predefinida, debe especificar los siguientes valores.

Recurso
nota

Puede especificar solo un valor en Resource.

La URL base incluye las cadenas de consulta, de haberlas, pero excluye los parámetros de CloudFront Expires, Signature y Key-Pair-Id, por ejemplo:

https://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes

Tenga en cuenta lo siguiente:

  • Protocol (Protocolo): el valor debe comenzar con http:// o https://.

  • Query string parameters (Parámetros de cadena de consulta): si no tiene parámetros de cadena de consulta, omita el signo de interrogación.

  • Alternate domain names (Nombres de dominio alternativos): si especifica un nombre de dominio alternativo (CNAME) en la URL, debe especificarlo al hacer referencia al archivo en la página web o aplicación. No especifique la URL de Amazon S3 del objeto.

DateLessThan

La fecha y hora de vencimiento de la URL en formato de tiempo Unix (en segundos) y hora universal coordinada (UTC). Por ejemplo, 1 de enero de 2013 a las 10:00 h UTC pasa a ser 1357034400 en formato de tiempo Unix.

Este valor debe coincidir con el valor del parámetro de cadena de consulta Expires de la URL firmada. No incluya el valor entre comillas.

Para obtener más información, consulte Cuándo comprueba CloudFront la fecha y hora de vencimiento de una URL firmada.

Ejemplo de instrucción de política para una URL firmada que utiliza una política predefinida

Cuando se utiliza la siguiente instrucción de política de ejemplo en una URL firmada, un usuario puede acceder al archivo https://d111111abcdef8.cloudfront.net/horizon.jpg hasta el 1 de enero de 2013 a las 10:00 h UTC:

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

Creación de una firma para una URL firmada que utiliza una política predefinida

Para crear el valor del parámetro Signature en una URL firmada, aplique una función hash y firme la instrucción de política que ha creado en Creación de una instrucción de política para una URL firmada que utiliza una política predefinida.

Para obtener más información y ejemplos de cómo resumir, aplicar una función hash y codificar la instrucción de política, consulte:

Opción 1: para crear una firma mediante una política predefinida
  1. Use la función hash SHA-1 y RSA para resumir y firmar la instrucción de política creada en el procedimiento Para crear una instrucción de política para una URL firmada que use una política predefinida. Utilice la versión de la instrucción de política que ya no incluye espacios vacíos.

    Para la clave privada requerida por la función hash, utilice una clave privada cuya clave pública esté en un grupo de claves de confianza activo para la distribución.

    nota

    El método que utilice para resumir y aplicar una función hash la instrucción de política depende de su lenguaje de programación y plataforma. Para ver el código de muestra, consulte Ejemplos de código para la creación de una firma para una URL firmada.

  2. Elimine los espacios vacíos (incluidos tabuladores y caracteres de línea nueva) de la cadena a la que se le ha aplicado una función hash y firmada.

  3. Codifique la cadena con codificación base64 de MIME. Para obtener más información, consulte la Section 6.8, Base64 Content-Transfer-Encoding de RFC 2045, MIME (Multipurpose Internet Mail Extensions) Part One: Format of Internet Message Bodies.

  4. Sustituya caracteres no válidos en una cadena de consulta de URL por caracteres válidos. En la siguiente tabla se muestran los caracteres válidos y no válidos.

    Sustituya los caracteres no válidos Por estos caracteres válidos

    +

    - (guion)

    =

    _ (guion bajo)

    /

    ~ (tilde)

  5. Añada el valor resultante a la URL firmada después de &Signature= y vuelva a Para crear una URL firmada mediante una política predefinida para terminar de encadenar las partes de la URL firmada.