Establecimiento de cookies firmadas mediante una política predefinida
Para establecer una cookie firmada utilizando una política predefinida, complete los pasos siguientes. Para crear la firma, consulte Creación de una firma para una cookie firmada que utiliza una política predefinida.
Para establecer cookies firmadas mediante una política predefinida
-
Si utiliza. NET o Java para crear cookies 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).
-
Programe su aplicación para enviar tres encabezados
Set-Cookie
a los espectadores aprobados. Necesita tres encabezadosSet-Cookie
porque cada encabezadoSet-Cookie
puede contener solo un par de nombre-valor y una cookie firmada de CloudFront requiere tres pares de nombre-valor. Los pares de nombre-valor son:CloudFront-Expires
,CloudFront-Signature
yCloudFront-Key-Pair-Id
. Los valores deben estar presentes en el lector antes de que un usuario realice la primera solicitud de un archivo cuyo acceso desea controlar.nota
En general, recomendamos que excluya los atributos
Expires
yMax-Age
. Al excluir los atributos, el navegador elimina la cookie cuando el usuario lo cierra, lo que reduce la posibilidad de alguien obtenga acceso no autorizado a su contenido. Para obtener más información, consulte Prevención del uso indebido de cookies firmadas.Los nombres de los atributos de las cookies distinguen entre mayúsculas y minúsculas.
Los saltos de línea se incluyen únicamente para que los atributos sean más legibles.
Set-Cookie: CloudFront-Expires=
date and time in Unix time format (in seconds) and Coordinated Universal Time (UTC)
; Domain=optional domain name
; Path=/optional directory path
; Secure; HttpOnly Set-Cookie: CloudFront-Signature=hashed and signed version of the policy statement
; Domain=optional domain name
; Path=/optional directory path
; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=public key ID for the CloudFront public key whose corresponding private key you're using to generate the signature
; Domain=optional domain name
; Path=/optional directory path
; Secure; HttpOnly- (Opcional)
Domain
-
Nombre de dominio del archivo solicitado. Si no especifica un atributo
Domain
, el valor predeterminado será el nombre de dominio de la URL; esto es aplicable solo al nombre de dominio especificado, no a subdominios. Si especifica un atributoDomain
, también será aplicable a subdominios. Un punto al inicio del nombre de dominio (por ejemplo,Domain=.example.com
) es opcional. Además, si no especifica un atributoDomain
, el nombre de dominio de la URL y el valor del atributoDomain
deberán coincidir.Puede especificar el nombre de dominio que CloudFront ha asignado a la distribución, por ejemplo, d111111abcdef8.cloudfront.net, pero no puede especificar *.cloudfront.net para el nombre de dominio.
Si desea utilizar un nombre de dominio alternativo como example.com en las URL, debe añadir dicho nombre de dominio a su distribución independientemente de que especifique el atributo
Domain
. Para obtener más información, consulte Nombres de dominio alternativos (CNAME) en el tema Referencia de configuración de la distribución. - (Opcional)
Path
-
Ruta del archivo solicitado. Si no especifica un atributo
Path
, el valor predeterminado será la ruta de la URL. Secure
-
Requiere que el espectador cifre cookies antes de enviar una solicitud. Recomendamos que envíe el encabezado
Set-Cookie
a través de una conexión HTTPS para asegurarse de que los atributos de la cookie estén protegidos contra ataques man-in-the-middle. HttpOnly
-
Define la forma en que el navegador (si es compatible) interactúa con el valor de la cookie. Con
HttpOnly
, JavaScript no puede acceder a los valores de las cookies. Esta precaución puede ayudar a mitigar los ataques de scripting entre sitios (XSS). Para obtener más información, consulte Using HTTP cookies. CloudFront-Expires
-
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 h UTC pasa a ser 1357034400 en formato de tiempo Unix. 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, https://tools.ietf.org/html/rfc3339
. CloudFront-Signature
-
Una versión de una instrucción de política JSON firmada, a la que se le ha aplicado una función hash y codificada en base64. Para obtener más información, consulte Creación de una firma para una cookie firmada que utiliza una política predefinida.
CloudFront-Key-Pair-Id
-
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.
- (Opcional)
En el ejemplo siguiente, se muestran los encabezados Set-Cookie
de una cookie firmada cuando se usa el nombre de dominio asociado a la distribución en las URL de los archivos:
Set-Cookie: CloudFront-Expires=1426500000; Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly Set-Cookie: CloudFront-Signature=yXrSIgyQoeE4FBI4eMKF6ho~CA8_; Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=d111111abcdef8.cloudfront.net; Path=/images/*; Secure; HttpOnly
En el ejemplo siguiente, se muestran los encabezados Set-Cookie
de una cookie firmada cuando se usa el nombre de dominio alternativo example.org en las URL de los archivos:
Set-Cookie: CloudFront-Expires=1426500000; Domain=example.org; Path=/images/*; Secure; HttpOnly Set-Cookie: CloudFront-Signature=yXrSIgyQoeE4FBI4eMKF6ho~CA8_; Domain=example.org; Path=/images/*; Secure; HttpOnly Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/images/*; Secure; HttpOnly
Si desea utilizar un nombre de dominio alternativo como example.com en las URL, debe añadir dicho nombre de dominio a su distribución independientemente de que especifique el atributo Domain
. Para obtener más información, consulte Nombres de dominio alternativos (CNAME) en el tema Referencia de configuración de la distribución.
Creación de una firma para una cookie firmada que utiliza una política predefinida
Para crear la firma para una cookie firmada que utilice una política predefinida, realice los procedimientos indicados a continuación.
Temas
Creación de una instrucción de política para una cookie firmada que use una política predefinida
Al establecer una cookie firmada que use una política predefinida, el atributo CloudFront-Signature
es una versión de una instrucción de política firmada y a la que se le ha aplicado una función hash. En el caso de cookies firmadas que utilizan una política predefinida, la instrucción de política no se incluye en el encabezado Set-Cookie
, a diferencia de las cookies firmadas que utilizan una política personalizada. Para crear la instrucción de política, complete los pasos siguientes.
Para crear una instrucción de política para una cookie firmada que use una política predefinida
-
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
yDateLessThan
, consulte Valores que se especifican en la instrucción de política de una política predefinida para cookies firmadas.{ "Statement": [ { "Resource": "base URL or stream name", "Condition": { "DateLessThan": { "AWS:EpochTime": ending date and time in Unix time format and UTC } } } ] }
-
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 política predefinida para cookies firmadas
Al crear una instrucción de una política predefinida, debe especificar los siguientes valores:
- Recurso
-
La URL base, incluidas las cadenas de consulta, de haberlas; por ejemplo:
https://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes
Puede especificar solo un valor en
Resource
.Tenga en cuenta lo siguiente:
-
Protocol (Protocolo): el valor debe comenzar con
http://
ohttps://
. -
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 para el archivo.
-
- DateLessThan
-
La fecha y hora de vencimiento de la URL en formato de tiempo Unix (en segundos) y hora universal coordinada (UTC). No incluya el valor entre comillas.
Por ejemplo, 16 de marzo de 2015 a las 10:00 h UTC pasa a ser 1426500000 en formato de tiempo Unix.
Este valor debe coincidir con el valor del atributo
CloudFront-Expires
en el encabezadoSet-Cookie
. 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 cookie firmada.
Ejemplo de instrucción de política para una política predefinida
Si se utiliza el siguiente ejemplo de instrucción de política en una cookie firmada, los usuarios podrán obtener acceso al archivo https://d111111abcdef8.cloudfront.net/horizon.jpg
hasta el 16 de marzo de 2015 a las 10:00 h UTC:
{ "Statement": [ { "Resource": "https://d111111abcdef8.cloudfront.net/horizon.jpg?size=large&license=yes", "Condition": { "DateLessThan": { "AWS:EpochTime": 1426500000 } } } ] }
Firma de la instrucción de política para crear una firma para una cookie firmada que utiliza una política predefinida
Para crear el valor del atributo CloudFront-Signature
en un encabezado Set-Cookie
, aplique una función hash y firme la instrucción de política creada en Para crear una instrucción de política para una cookie firmada que use una política predefinida.
Para obtener más información y ejemplos de cómo aplicar una función hash, firmar y codificar la instrucción de política, consulte los siguientes temas:
Para crear una firma para una cookie firmada que use una política predefinida
-
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 cookie 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.
-
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.
-
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. -
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)
-
Incluya el valor resultante en el encabezado
Set-Cookie
para el par nombre-valorCloudFront-Signature
. A continuación, vuelva a Para establecer cookies firmadas mediante una política predefinida y añada el encabezadoSet-Cookie
enCloudFront-Key-Pair-Id
.