¿Cómo puedo permitir el acceso a mis buckets de Amazon S3 a los clientes que no usan TLS 1.2 o superior?
Mis clientes no usan la versión 1.2 o superior de TLS, por lo que no pueden acceder al contenido almacenado en mis buckets de Amazon Simple Storage Service (Amazon S3). ¿Cómo puedo permitir que estos clientes accedan al contenido de mis buckets de Amazon S3 mediante TLS 1.0 o 1.1?
Descripción corta
AWS impone el uso de TLS 1.2 o superior en todos los puntos de conexión de la API de AWS. Para seguir conectándose a los servicios de AWS, debe actualizar todo el software que utilice TLS 1.0 o 1.1.
Resolución
Amazon CloudFront permite el uso de versiones antiguas de TLS al abstraer a los clientes del protocolo TLS que se utiliza entre su distribución de CloudFront y Amazon S3.
Crear una distribución de CloudFront con OAC
Con CloudFront, puede admitir solicitudes anónimas y públicas a sus buckets de S3. O bien, puede hacer que sus buckets de S3 sean privados y accesibles a través de CloudFront únicamente si requiere solicitudes firmadas para acceder a los buckets de S3.
Admitir solicitudes anónimas y públicas a sus buckets de S3
Nota: El siguiente ejemplo asume que ya tiene un bucket de S3 en uso. Si no tiene un bucket de S3, cree uno.
Para crear la distribución de CloudFront, siga estos pasos:
- Abra la consola de CloudFront.
- Elija Create Distribution (Crear distribución).
- En Origin (Origen), para Origin domain (Dominio de origen), elija el punto de conexión de la API de REST de su bucket de S3 en la lista desplegable.
- En Viewer Protocol Policy (Política de protocolo del lector), seleccione Redirect HTTP to HTTPS (Redirigir HTTP a HTTPS).
- En Allowed HTTP endpoints (Puntos de conexión HTTP permitidos), seleccione GET, HEAD y OPTIONS para admitir las solicitudes de lectura**.**
- En la sección Origin access (Origen de acceso), seleccione Origin access control settings (recommended) (Ajustes de control de origen de acceso [recomendado]).
- Seleccione Create control setting (Crear configuración de control) y utilice el nombre predeterminado. Para el comportamiento de firma, seleccione Sign requests (recommended) (Firmar solicitudes [recomendado]) y, a continuación, seleccione Create (Crear). La configuración recomendada por la OAC autentica automáticamente la solicitud del espectador.
- Seleccione la identidad en la lista desplegable**.** Una vez creada la distribución**,** actualice la política de buckets para restringir el acceso a la OAC.
- En Default cache behavior (Comportamiento de caché predeterminado), Viewer (Visor), seleccione Redirect HTTP to HTTPS (Redirigir HTTP a HTTPS) para Viewer Protocol Policy (Política de protocolo del visor) y deje el resto de la configuración tal como viene predeterminada.
- En Cache key and origin requests (Solicitudes de origen y clave de caché), elija Cache policy and origin request policy (recommended) (Política de caché y política de solicitud de origen [recomendado]). A continuación, utilice CachingOptimized para la política de caché y CORS-S3Origin para la política de solicitudes de Origin.
- Seleccione Create distribution (Crear distribución) y espere a que su estado se actualice a Enabled (Activada).
Exigir solicitudes firmadas para acceder a sus buckets de S3
Agregue seguridad a sus buckets de S3 al admitir únicamente solicitudes firmadas. Con las solicitudes firmadas, OAC sigue los parámetros de autenticación y los reenvía al origen de S3, que luego rechaza las solicitudes anónimas.
Si desea crear una distribución de CloudFront que requiera solicitudes firmadas para acceder a los buckets de S3, siga estos pasos:
- Abra la consola de CloudFront.
- Elija Create Distribution (Crear distribución).
- En Origin (Origen), para Origin domain (Dominio de origen), elija el punto de conexión de la API de REST de su bucket de S3 en la lista desplegable.
- En Viewer Protocol Policy (Política de protocolo del lector), seleccione Redirect HTTP to HTTPS (Redirigir HTTP a HTTPS).
- En Allowed HTTP endpoints (Puntos de conexión HTTP permitidos), seleccione GET, HEAD y OPTIONS para admitir las solicitudes de lectura**.**
- En la sección Origin access (Origen de acceso), seleccione Origin access control settings (recommended) (Ajustes de control de origen de acceso [recomendado]).
- Marque la opción Do not sign requests (No firmar solicitudes) para bloquear todas las solicitudes sin firmar.
Nota: El bloqueo de las solicitudes sin firmar requiere que cada cliente firme sus solicitudes para que el origen de S3 pueda evaluar los permisos. - Cree una política de caché personalizada para reenviar el encabezado de autorización del cliente al origen.
- En Cache key and origin requests (Solicitudes de origen y clave de caché), elija Cache policy and origin request policy (recommended) (Política de caché y política de solicitud de origen [recomendado]).
- Seleccione Create Policy (Crear política).
- Ingrese un nombre para la política de caché en la sección Name (Nombre).
- En Cache key settings (Configuración de la clave de caché), vaya a Headers (Encabezados) y seleccione Include the following headers (Incluir los siguientes encabezados).
- En Add Header (Agregar encabezado) seleccione Authorization (Autorización).
- Seleccione Create (Crear).
Controlar la política de seguridad del cliente
Para controlar una política de seguridad en CloudFront, debe tener un dominio personalizado. Se recomienda especificar un nombre de dominio alternativo para la distribución. También se recomienda utilizar un certificado SSL personalizado que esté configurado en AWS Certificate Manager (ACM). De este modo, tendrá más control sobre la política de seguridad y permitirá a los clientes seguir utilizando TLS 1.0. Para obtener más información, consulte Protocolos y cifrados compatibles entre los espectadores y CloudFront.
Si usa el nombre de dominio *.cloudfront.net predeterminado, CloudFront aprovisiona automáticamente un certificado y establece la política de seguridad para permitir TLS 1.0 y 1.1. Para obtener más información, consulte Distribution settings (Configuración de distribución).
Para configurar un nombre de dominio alternativo para su distribución de CloudFront, siga estos pasos:
- Inicie sesión en la consola de administración de AWS y, a continuación, abra la consola de CloudFront.
- Seleccione el ID de la distribución que quiere actualizar.
- En la pestaña General, seleccione Edit (Editar).
- En nombres de dominio alternativos (CNAME), seleccione Add item (Agregar elemento) e ingrese el nombre del dominio.
Nota: Se recomienda utilizar un registro de nombre canónico (CNAME) personalizado para acceder a los recursos. El uso de un CNAME le brinda un mayor control sobre el enrutamiento y permite una mejor transición para sus clientes. - En Custom SSL Certificate (Certificado SSL personalizado), elija el certificado SSL personalizado de la lista desplegable que cubre su CNAME para asignarlo a la distribución.
Nota: Para más información sobre la instalación de un certificado, consulte ¿Cómo puedo configurar la distribución de CloudFront para utilizar un certificado SSL/TLS? - Seleccione Create distribution (Crear distribución) y espere a que su estado se actualice a Enabled (Activada).
Después de crear la distribución, debe permitir que OAC acceda a su bucket. Siga los siguientes pasos:
- Vaya a la página de la consola de CloudFront y abra su distribución de CloudFront.
- Seleccione la pestaña Origins (Orígenes), seleccione su origen, y luego haga clic en Edit (Editar).
- Elija Copy policy (Copiar política), abra el permiso del bucket y actualice su política de buckets.
- Abra la página Go to S3 bucket permissions (Ir a los permisos de buckets de S3).
- En Bucket policy (Política del bucket), elija Edit (Editar). Pegue la política que copió anteriormente y, a continuación, seleccione Save (Guardar). Si su política de buckets requiere algo más que leer desde S3, puede agregar las API necesarias.
Si usa un nombre de dominio personalizado, cambie las entradas de DNS para usar la nueva URL de distribución de CloudFront. Si no usa un nombre de dominio personalizado, debe proporcionar la nueva URL de distribución de CloudFront a sus usuarios. Además, debe actualizar cualquier software de cliente o dispositivo que utilice la URL anterior.
Si utiliza un SDK de AWS para acceder a los objetos de Amazon S3, debe cambiar el código para utilizar puntos de conexión HTTPS normales. Además, asegúrese de usar la nueva URL de CloudFront. Si los objetos no son públicos y requieren un mejor control, puede ofrecer contenido privado con URL y cookies firmadas.
Usar las URL prefirmadas de S3 para acceder a los objetos
Si su flujo de trabajo se basa en las URL prefirmadas de S3, utilice una distribución de CloudFront para transmitir la consulta al origen de S3. En primer lugar, genere una URL prefirmada para el objeto que desee. A continuación, sustituya el host de la URL por el punto de conexión de CloudFront para entregar la llamada a través de CloudFront y actualizar automáticamente el protocolo de cifrado. Para probar y generar una URL prefirmada, ejecute el siguiente comando de la CLI:
aws s3 presign s3://BUCKET_NAME/test.jpg
Resultado de ejemplo:
https://bucket_name.s3.us-east-1.amazonaws.com/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=%5b...%5d%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=%5b...%5d&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature">https://BUCKET_NAME.s3.us-east-1.amazonaws.com/test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=[...]%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=[...]&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature =[...]
Ahora, cambie la URL de S3 al nuevo punto de conexión de CloudFront. Por ejemplo, sustituya esta URL de S3:
BUCKET_NAME.s3.eu-west-1.amazonaws.com
con este punto de conexión:
https://DISTRIBUTION_ID.cloudfront.net.
Resultado de ejemplo:
https://<DISTRIBUTION_ID>.cloudfront.net /test.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=[...]%2F20220901%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=[...]&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Signature=[...]
Para usar URL prefirmadas, aplique la siguiente configuración de CloudFront:
- Configure el comportamiento de firma de OAC en Do not sign requests (No firmar solicitudes).
- Configure la política de solicitudes de origen de distribución de CloudFront en Origin request settings (Ajustes de solicitud de origen) : Headers – None; Cookies – None; Query strings – All (Encabezados: ninguno; cookies: ninguna; cadenas de consulta: todas).
- Configure la política de caché en Headers – None; Cookies – None; Query strings – None (Encabezados: ninguno; cookies: ninguna; cadenas de consulta: todas).
En AWS CloudTrail, la solicitud GET para descargar desde una URL prefirmada de S3 se muestra como la identidad que generó la URL prefirmada.
Si utiliza un SDK de AWS para acceder a los objetos de S3, debe cambiar el código para utilizar la URL prefirmada. En su lugar, utilice una solicitud HTTPS normal y utilice la nueva URL de CloudFront.
Confirmar que está utilizando protocolos de cifrado modernos para Amazon S3
Si desea probar su nueva política, utilice el siguiente comando curl de ejemplo para realizar solicitudes HTTPS mediante un protocolo heredado específico:
curl https://${CloudFront_Domain}/image.png -v --tlsv1.0 --tls-max 1.0
El comando curl de ejemplo hace una solicitud a CloudFront mediante TLS 1.0. Esta se conecta al origen de S3 mediante TLS 1.2 y descarga correctamente el archivo.
Se recomienda utilizar AWS CloudTrail Lake para identificar conexiones TLS más antiguas a los puntos de conexión de servicios de AWS. Puede configurar el almacén de datos de eventos de CloudTrail Lake para capturar eventos de administración o eventos de datos. El evento de CloudTrail correspondiente en CloudTrail Lake muestra la versión 1.2 de TLS, lo cual confirma que sus clientes utilizan una política de seguridad moderna para conectarse a Amazon S3.

Contenido relevante
- OFICIAL DE AWSActualizada hace 7 meses
- OFICIAL DE AWSActualizada hace 5 meses
- OFICIAL DE AWSActualizada hace 2 meses