Especificación de los signatarios que pueden crear URL firmadas y cookies firmadas - Amazon CloudFront

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Especificación de los signatarios que pueden crear URL firmadas y cookies firmadas

Para crear URL firmadas o cookies firmadas, necesita un signatario. Un firmante es un grupo de claves de confianza en CloudFront el que se crea o una AWS cuenta que contiene un par de CloudFront claves. Le recomendamos que utilice grupos de claves de confianza con URL firmadas y cookies firmadas. Para obtener más información, consulte Elegir entre grupos de claves de confianza (recomendado) y cuentas de AWS.

El signatario tiene dos fines:

  • En cuanto añadas al firmante a tu distribución, CloudFront empezará a exigir que los espectadores utilicen direcciones URL firmadas o cookies firmadas para acceder a tus archivos.

  • Al crear URL firmadas o cookies firmadas, se utiliza la clave privada del par de claves del signatario para firmar una parte de la URL o la cookie. Cuando alguien solicita un archivo restringido, CloudFront compara la firma de la URL o cookie con la URL o cookie sin firmar para comprobar que no se ha manipulado. CloudFront también verifica que la URL o la cookie sean válidas, es decir, por ejemplo, que la fecha y la hora de caducidad no hayan pasado.

Cuando se especifica un signatario, también se especifican indirectamente los archivos que requieren URL firmadas o cookies firmadas al agregar el signatario a un comportamiento de la caché. Si la distribución solo dispone de un comportamiento de la caché, los lectores deben utilizar URL o cookies firmadas para acceder a cualquier archivo de la distribución. Si crea varios comportamientos de la caché y agrega signatarios a algunos de ellos pero no a otros, puede exigir que los lectores utilicen URL o cookies firmadas para acceder a algunos archivos y no a otros.

Para especificar los firmantes (las claves privadas) que pueden crear direcciones URL firmadas o cookies firmadas y para añadir los firmantes a la CloudFront distribución, lleve a cabo las siguientes tareas:

  1. Decida si desea utilizar un grupo de claves de confianza o una cuenta de AWS como signatario. Recomendamos utilizar un grupo de claves de confianza. Para obtener más información, consulte Elegir entre grupos de claves de confianza (recomendado) y cuentas de AWS.

  2. Para el signatario que eligió en el paso 1, cree un par de claves privadas-públicas. Para obtener más información, consulte Creación de pares de claves para los signatarios.

  3. Si utiliza .NET o Java para crear URL firmadas o cookies firmadas, vuelva a formatear la clave privada. Para obtener más información, consulte Volver a formatear la clave privada (solo .NET y Java).

  4. En la distribución para la que va a crear URL firmadas o cookies firmadas, especifique el signatario. Para obtener más información, consulte Agregar un signatario a una distribución.

Elegir entre grupos de claves de confianza (recomendado) y cuentas de AWS

Para utilizar URL firmadas o cookies firmadas, necesita un signatario. Un firmante es un grupo de claves de confianza en CloudFront el que se crea o una AWS cuenta que contiene un par de CloudFront claves. Se recomienda utilizar grupos de claves de confianza, por los siguientes motivos:

  • Con los grupos de CloudFront claves, no es necesario usar el usuario raíz de la AWS cuenta para administrar las claves públicas de las URL CloudFront firmadas y las cookies firmadas. AWSlas prácticas recomendadas recomiendan no utilizar el usuario root cuando no sea necesario.

  • Con los grupos de CloudFront claves, puedes gestionar las claves públicas, los grupos de claves y los firmantes de confianza mediante la CloudFront API. Puede usar la API para automatizar la creación de claves y la rotación de claves. Cuando usas el usuario AWS root, debes usarlo AWS Management Console para administrar los pares de CloudFront claves, por lo que no puedes automatizar el proceso.

  • Como puedes administrar grupos clave con la CloudFront API, también puedes usar políticas de permisos AWS Identity and Access Management (IAM) para limitar lo que pueden hacer los distintos usuarios. Por ejemplo, puede permitir a los usuarios cargar claves públicas, pero no eliminarlas. También puede permitir que los usuarios eliminen claves públicas, pero solo cuando se cumplen ciertas condiciones, como el uso de la autenticación multifactor, el envío de la solicitud desde una red determinada o el envío de la solicitud dentro de un intervalo de fecha y hora determinado.

  • Con los grupos de CloudFront claves, puedes asociar un mayor número de claves públicas a tu CloudFront distribución, lo que te da más flexibilidad a la hora de usar y administrar las claves públicas. De forma predeterminada, puede asociar hasta cuatro grupos de claves con una sola distribución y puede tener hasta cinco claves públicas en un grupo de claves.

    Cuando utilizas el usuario raíz de la AWS cuenta para administrar los pares de CloudFront claves, solo puedes tener un máximo de dos pares de CloudFront claves activos por AWS cuenta.

Creación de pares de claves para los signatarios

Cada firmante que utilices para crear URL CloudFront firmadas o cookies firmadas debe tener un key pair de claves pública y privada. El firmante usa su clave privada para firmar la URL o las cookies, y CloudFront usa la clave pública para verificar la firma.

La forma de crear un par de claves depende de si utiliza un grupo de claves de confianza como firmante (recomendado) o un par de CloudFront claves. Para obtener más información, consulte las siguientes secciones. El par de claves que cree debe cumplir los siguientes requisitos:

  • Debe ser un par de claves SSH-2 RSA.

  • Debe encontrarse en formato PEM codificado en Base64.

  • Debe ser un par de claves de 2048 bits.

Para ayudar a proteger las aplicaciones, le recomendamos que cambie los pares de claves periódicamente. Para obtener más información, consulte Rotación de pares de claves.

Crear un par de claves para un grupo de claves de confianza (recomendado)

Para crear un par de claves para un grupo de claves de confianza, realice los siguientes pasos:

  1. Cree el par de claves públicas-privadas.

  2. Sube la clave pública a. CloudFront

  3. Agregue la clave pública a un grupo de CloudFront claves.

Para obtener más información, consulte los siguientes procedimientos.

Para crear un par de claves
nota

En los siguientes pasos se utiliza OpenSSL como ejemplo de una forma de crear un par de claves. Hay muchas otras formas de crear un par de claves RSA.

  1. El siguiente comando de ejemplo utiliza OpenSSL para generar un par de claves RSA con una longitud de 2048 bits y guardarlo en el archivo denominado private_key.pem.

    openssl genrsa -out private_key.pem 2048
  2. El archivo resultante contiene tanto la clave pública como la privada. El siguiente comando de ejemplo extrae la clave pública del archivo denominado private_key.pem.

    openssl rsa -pubout -in private_key.pem -out public_key.pem

    Se carga la clave pública (en el archivo public_key.pem) más adelante, en el siguiente procedimiento.

Para cargar la clave pública a CloudFront
  1. Inicie sesión en AWS Management Console y abra la CloudFront consola enhttps://console.aws.amazon.com/cloudfront/v4/home.

  2. En el menú de navegación, elija Claves públicas.

  3. Elija Add public key (Agregar clave pública).

  4. En la ventana Add public key (Agregar clave pública), haga lo siguiente:

    1. En Key name (Nombre de la clave), escriba un nombre para identificar la clave pública.

    2. En Key value (Valor de clave), pegue la clave pública. Si ha seguido los pasos del procedimiento anterior, la clave pública se encuentra en el archivo denominado public_key.pem. Para copiar y pegar el contenido de la clave pública, puede:

      • Use el comando cat en la línea de comandos de macOS o Linux, así:

        cat public_key.pem

        Copie el resultado de ese comando y péguelo en el campo Key value (Valor de clave).

      • Abre el public_key.pem archivo con un editor de texto sin formato como el Bloc de notas (en Windows) o TextEdit (en macOS). Copie el contenido del archivo y péguelo en el campo Key value (Valor de clave).

    3. (Opcional) En Comment (Comentario), agregue un comentario para describir la clave pública.

    Cuando haya terminado, elija Add (Agregar).

  5. Registre el ID de la clave pública. Lo usará más adelante cuando cree URL firmadas o cookies firmadas, como valor del campo Key-Pair-Id.

Para agregar la clave pública a un grupo de claves
  1. Abre la CloudFront consola en. https://console.aws.amazon.com/cloudfront/v4/home

  2. En el menú de navegación, elija Grupos de claves.

  3. Elija Add key group (Agregar grupo de claves).

  4. En la página Create key group (Crear grupo de claves), haga lo siguiente:

    1. En Key group name (Nombre del grupo de claves), escriba un nombre para identificar el grupo de claves.

    2. (Opcional) En Comment (Comentario), escriba un comentario para describir el grupo de claves.

    3. En Public keys (Claves públicas), seleccione la clave pública que desea agregar al grupo de claves y, a continuación, elija Add (Agregar). Repita este paso para cada clave pública que desee agregar al grupo de claves.

  5. Elija Create key group (Crear grupo de claves).

  6. Registre el nombre del grupo de claves. Se usa más adelante para asociar el grupo de claves a un comportamiento de caché en una CloudFront distribución. (En la CloudFront API, se usa el ID del grupo de claves para asociar el grupo de claves a un comportamiento de caché).

importante

Se recomienda crear una clave pública para un grupo de claves de confianza en lugar de seguir estos pasos. Para obtener información sobre la forma recomendada de crear claves públicas para URL firmadas y cookies firmadas, consulte Crear un par de claves para un grupo de claves de confianza (recomendado).

Puede crear un CloudFront key pair de las siguientes maneras:

  • Crear un par de claves en la AWS Management Console y descargar la clave privada. Consulte el procedimiento siguiente.

  • Cree un par de claves RSA usando una aplicación como OpenSSL y, a continuación, cargue la clave pública en la AWS Management Console. Para obtener más información acerca de la creación de un par de claves RSA, consulte Crear un par de claves para un grupo de claves de confianza (recomendado).

Para crear pares de CloudFront claves en el AWS Management Console
  1. Inicie sesión en la AWS Management Console con las credenciales del usuario raíz de la cuenta de AWS.

    importante

    Los usuarios de IAM no pueden crear pares de CloudFront claves. Debe iniciar sesión con credenciales de usuario raíz para crear pares de claves.

  2. Elija el nombre de la cuenta y, a continuación, elija My Security Credentials (Mis credenciales de seguridad).

  3. Elija pares de CloudFront claves.

  4. Confirme que no tiene más de un par de claves activas. No se puede crear un par de claves si ya dispone de dos pares de claves activos.

  5. Elija Create New Key Pair (Crear un nuevo par de claves).

    nota

    También puede optar por crear su propio par de claves y cargar la clave pública. CloudFront los pares de claves admiten claves de 1024, 2048 o 4096 bits.

  6. En el cuadro de diálogo Create Key Pair (Crear par de claves), elija Download Private Key File (Descargar archivo de claves privadas) y, a continuación, guarde el archivo en el equipo.

    importante

    Guarde la clave privada de su CloudFront key pair en un lugar seguro y establezca los permisos en el archivo para que solo los administradores que desee puedan leerlo. Si alguien obtiene su clave privada, puede generar URL y cookies firmadas válidas y descargar su contenido. No puede volver a obtener la clave privada, por lo que si la pierde o la elimina, debe crear un nuevo par de CloudFront claves.

  7. Registre el ID de su par de claves. (En la AWS Management Console, esto se denomina Access Key ID [ID de clave de acceso]). Lo utilizará al crear URL firmadas o cookies firmadas.

Volver a formatear la clave privada (solo .NET y Java)

Si utiliza .NET o Java para crear URL firmadas o cookies firmadas, no puede utilizar la clave privada del par de claves en el formato PEM predeterminado para crear la firma. En su lugar, haga lo siguiente:

  • .NET framework: convierte la clave privada en el formato XML que utiliza .NET Framework. Hay varias herramientas disponibles.

  • Java: convierte la clave privada en formato DER. Una forma de hacerlo es con el siguiente comando de OpenSSL. En el siguiente comando, private_key.pem es el nombre del archivo que contiene la clave privada con formato PEM y private_key.der es el nombre del archivo que contiene la clave privada con formato DER después de ejecutar el comando.

    openssl pkcs8 -topk8 -nocrypt -in private_key.pem -inform PEM -out private_key.der -outform DER

    Para asegurarse de que el codificador funciona correctamente, agregue el recurso JAR de la API de criptografía Java Bouncy Castle a su proyecto y, a continuación, agregue el proveedor Bouncy Castle.

Agregar un signatario a una distribución

Un firmante es el grupo de claves de confianza (recomendado) o el par de CloudFront claves que puede crear direcciones URL firmadas y cookies firmadas para una distribución. Para utilizar direcciones URL firmadas o cookies firmadas con una CloudFront distribución, debe especificar un firmante.

Los signatarios se asocian con comportamientos de la caché. Esto le permite exigir URL firmadas o cookies firmadas para algunos archivos y no para otros dentro de la misma distribución. Una distribución requiere URL o cookies firmadas solo para los archivos asociados con los comportamientos de la caché correspondientes.

Del mismo modo, un signatario solo puede firmar URL o cookies para archivos asociados con los comportamientos de la caché correspondientes. Por ejemplo, si tiene un signatario para un comportamiento de la caché y un signatario diferente para un comportamiento de la caché diferente, ninguno de los dos signatarios puede crear URL o cookies firmadas para los archivos asociados con el otro comportamiento de la caché.

importante

Antes de agregar un signatario a la distribución, haga lo siguiente:

  • Defina cuidadosamente los patrones de ruta y la secuencia de los comportamientos de la caché para no conceder a los usuarios acceso no deseado al contenido o impedir que accedan al contenido que desea que esté disponible para todos.

    Supongamos que una solicitud coincide con el patrón de ruta de dos comportamientos de la caché. El primer comportamiento de la caché no requiere URL firmadas ni cookies firmadas y el segundo comportamiento de la caché sí. Los usuarios podrán obtener acceso a los archivos sin usar URL o cookies firmadas porque CloudFront procesa el comportamiento de la caché que está asociado a la primera coincidencia.

    Para obtener más información acerca de patones de rutas, consulte Patrón de ruta.

  • Para una distribución que ya utiliza para distribuir contenido, asegúrese de que está listo para comenzar a generar URL firmadas y cookies firmadas antes de agregar un signatario. Al añadir un firmante, CloudFront rechaza las solicitudes que no incluyan una URL firmada válida o una cookie firmada.

Puedes añadir firmantes a tu distribución mediante la CloudFront consola o la CloudFront API.

Añadir un firmante a una distribución mediante la consola CloudFront

En los siguientes pasos se muestra cómo agregar un grupo de claves de confianza como signatario. También puede agregar una cuenta de AWS como signatario de confianza, pero no es recomendable hacerlo.

Para agregar un signatario a una distribución mediante la consola
  1. Registre el ID del grupo de claves del grupo de claves que desea utilizar como signatario de confianza. Para obtener más información, consulte Crear un par de claves para un grupo de claves de confianza (recomendado).

  2. Abra la CloudFront consola en. https://console.aws.amazon.com/cloudfront/v4/home

  3. Elija la distribución cuyos archivos desea proteger con URL firmadas o cookies firmadas.

    nota

    Para agregar un signatario a una distribución nueva, se especifica la misma configuración que se describe en el paso 6 al crear la distribución.

  4. Elija la pestaña Behaviors (Comportamientos).

  5. Seleccione el comportamiento de caché cuyo patrón de ruta coincida con los archivos que desea proteger con URL firmadas o cookies firmadas y, a continuación, elija Edit (Editar).

  6. En la página Edit Behavior (Editar comportamiento), haga lo siguiente:

    1. En Restrict Viewer Access (Use Signed URLs or Signed Cookies) (Restringir el acceso a lectores [mediante URL o cookies firmadas]), elija Yes (Sí).

    2. En Trusted Key Groups or Trusted Signer (Grupos de claves de confianza o signatario de confianza), elija Trusted Key Groups (Grupos de claves de confianza).

    3. En Trusted Key Groups (Grupos de claves de confianza), elija el grupo de claves que desea agregar y, a continuación, elija Add (Agregar). Repita el procedimiento si desea agregar más de un grupo de claves.

  7. Elija Yes, Edit (Sí, Editar) para actualizar el comportamiento de la caché.

Añadir un firmante a una distribución mediante la API CloudFront

Puedes usar la CloudFront API para añadir un grupo de claves de confianza como firmante. Puede agregar un signatario a una distribución existente o a una distribución nueva. En cualquier caso, deberá especificar los valores en el elemento TrustedKeyGroups.

También puede agregar una cuenta de AWS como signatario de confianza, pero no es recomendable hacerlo.

Consulte los siguientes temas en la referencia de las CloudFront API de Amazon:

Rotación de pares de claves

Se recomienda rotar periódicamente (cambiar) los pares de claves para las URL firmadas y las cookies firmadas. Para rotar pares de claves que utiliza para crear URL firmadas o cookies firmadas sin invalidar las URL o cookies que no hayan vencido todavía, realice las siguientes tareas:

  1. Cree un nuevo par de claves y agregue la clave pública a un grupo de claves. Para obtener más información, consulte Crear un par de claves para un grupo de claves de confianza (recomendado).

  2. Si ha creado un nuevo grupo de claves en el paso anterior, agregue el grupo de claves a la distribución como signatario.

    importante

    No elimine ninguna clave pública existente del grupo de claves ni ningún grupo de claves de la distribución todavía. Solo agregue los nuevos.

  3. Actualice la aplicación para crear firmas con la clave privada del nuevo par de claves. Confirme que las URL firmadas o las cookies firmadas con las nuevas claves privadas funcionan.

  4. Espere hasta que pase la fecha de vencimiento de las URL o las cookies firmadas con la clave privada anterior. A continuación, elimine la clave pública anterior del grupo de claves. Si ha creado un nuevo grupo de claves en el paso 2, elimine el grupo de claves anterior de la distribución.