
Estoy intentando integrar cookies firmadas para una distribución de CloudFront que se alimenta de un depósito S3, pero recibo mensajes de error de acceso denegado:
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>BLAH BLAH</RequestId>
<HostId>BLAH BLAH</HostId>
</Error>
Lo que me desconcierta es que algunos archivos parecen funcionar de manera consistente, mientras que otros en el mismo directorio que mi política personalizada permite fallan al usar las mismas cookies firmadas.
Por ejemplo: tengo un archivo en/proyectos/index.htmlque funciona y un archivo en/projects/src/Runtime.jslo cual no ocurre a pesar de utilizar una política personalizada que claramente permite ambos al tener un comodín en el recurso:http://test.midominio.com/projects/*
Ambos archivos están configurados como privados en S3, la única diferencia que se me ocurre entre cómo se solicitan estos dos archivos es que el/projects/src/Runtime.jsSe solicita archivo con un referente.prueba.midominio.comy nomidominio.comque es lo que sirvió al primero/proyectos/index.htmlpedido.
Sé que las cookies se están configurando correctamente en ambas solicitudes y que la política personalizada y la firma para ellas son válidas porque cuando juego con ellas y les doy valores incorrectos, aparece un mensaje de error diferente.
¡De todos modos! Mi configuración es la siguiente:
Configuración de CloudFront:i.imgur.com/DMcUeDY.png(Limitación del enlace de Serverfault, bah)
Tengo un nombre de host alternativo que es un subdominio del sitio que sirve el archivo (por ejemplo, test.mydomain.com). No es una entrada CNAME real y no tengo un certificado para ello; estoy haciendo referencia a CloudFront usando ese nombre a través de la entrada local /etc/hosts.
Configuración de origen de CloudFront:i.imgur.com/ereGJ42.png(Limitación del enlace Serverfault, meh)
El origen es sencillo: hago referencia a la raíz de mi depósito s3 y no restrinjo el depósito porque también contiene archivos que quiero que permanezcan disponibles públicamente.
Modifiqué el comportamiento predeterminado:i.imgur.com/5N2RlxM.png(Limitación del enlace por error del servidor, uhh)
Básicamente activó Restringir el acceso del visor. Los firmantes confiables son la cuenta raíz que también es propietaria del depósito s3.
El resto de las opciones de CloudFront quedaron intactas. Tengo un par de claves de CloudFront generado por Amazon y lo estoy usando con los fragmentos proporcionados por Amazon para PHP (usando openssl_sign) para firmar una política personalizada que brinda acceso a un directorio completo.
Realmente no puedo validar dónde está el problema gracias al vago mensaje de error "Acceso denegado", pero estoy bastante seguro de que no se debe a la forma en que firmo las cookies. Intenté usar valores incorrectos y obtuve diferentes errores como "Firma mal formada" o "Política mal formada", así que supongo que mi firma está correcta. Además, como mencioné, algunos archivos funcionan.
He estado atrapado en esto durante unos días, ¡cualquier ayuda sería muy apreciada!