Acesso CloudFront + S3 negado usando cookies assinados

3

Estou tentando integrar cookies assinados para uma distribuição do CloudFront alimentada por um intervalo do S3, mas recebendo mensagens de erro de acesso negado:

<Error>
    <Code>AccessDenied</Code>
    <Message>Access Denied</Message>
    <RequestId>BLAH BLAH</RequestId>
    <HostId>BLAH BLAH</HostId>
</Error>

O que me surpreende é que alguns arquivos parecem funcionar de forma consistente, enquanto outros no mesmo diretório que minha política personalizada permite falhar usando os mesmos cookies assinados.

Por exemplo: eu tenho um arquivo em /projects/index.html que funciona e um arquivo em /projects/src/Runtime.js que não funciona usando uma política personalizada que permite claramente que ambos tenham um caractere curinga no recurso: link *

Ambos os arquivos são definidos como privados no S3, a única diferença que posso imaginar entre como esses dois arquivos são solicitados é que o arquivo /projects/src/Runtime.js seja solicitado com um referenciador test.mydomain.com e não mydomain.com que é o que serviu na primeira solicitação /projects/index.html .

Eu sei que os cookies estão sendo definidos corretamente em ambas as solicitações, e que a política e a assinatura personalizadas para eles são válidas porque, quando eu brinco com eles e lhes dou valores errados, recebo uma mensagem de erro diferente.

De qualquer forma! Minha configuração é a seguinte:
Configurações do CloudFront: i.imgur.com/DMcUeDY.png (limitação do link Serverfault, bah)
Eu tenho um nome de host alternativo que é um subdomínio do site que está servindo o arquivo (por exemplo test.mydomain.com). Não é uma entrada real do CNAME e eu não tenho um certificado para isso - estou fazendo referência ao CloudFront usando esse nome via entrada local do / etc / hosts.

Configurações do Origin do CloudFront: i.imgur.com/ereGJ42.png (limitação do link Serverfault, meh)
A origem é direta - Fazer referência à raiz do meu depósito s3 e não restringir o depósito porque também contém arquivos que desejo permanecer publicamente disponíveis.

Eu modifiquei o comportamento dos surdos: i.imgur.com/5N2RlxM.png (limitação do link Serverfault, uhh)
Basicamente ativado o acesso restrito do visualizador. Os assinantes confiáveis são a conta root que também é a proprietária do bucket s3.

O restante das opções do CloudFront foi deixado intacto. Eu tenho um par de chaves do CloudFront gerado pela Amazon e eu estou usando-o com os fragmentos amazon fornecidos para PHP (usando openssl_sign) para assinar uma política personalizada que dá acesso a um diretório inteiro.

Não consigo validar de fato onde está o problema, graças à mensagem de erro "Acesso negado" realmente vago, mas tenho certeza de que não está na maneira como assino os cookies. Tentei usar valores errados e recebi erros diferentes, como "Assinatura malformada" ou "Política incorreta", por isso estou assumindo meus cheques de assinatura. Além disso, como mencionei, alguns arquivos funcionam.

Eu tenho estado preso nisso por alguns dias agora, qualquer ajuda seria muito apreciada!

    
por YLivay 24.08.2015 / 16:42

0 respostas