Je souhaite savoir comment créer et tester des cookies signés Amazon CloudFront pour accéder à l'origine S3.

L'exemple présenté dans cet article illustre une procédure détaillée permettant de tester une origine S3 et d'en restreindre l'accès avec des cookies signés Amazon CloudFront. Il décrit également comment utiliser les cookies signés Amazon CloudFront avec la commande curl pour accéder à l'origine S3.

Pour tester les objets d'une origine Amazon S3 et en restreindre l'accès avec des cookies signés Amazon CloudFront, suivez la procédure ci-dessous.

Prérequis

Indiquez la distribution, la paire de clés et le fichier de clés privées appropriés.

Etapes

1. Accédez à la page http://www.unixtimestamp.com/ et procurez-vous l'heure Unix correspondant à la date d'expiration du cookie.

2. Créez une stratégie conformément à la procédure de création d'une instruction de cookie signé utilisant une stratégie personnalisée et enregistrez-la sous le nom de fichier policy.json. Dans notre exemple, nous utiliserons « 06/30/2016 » comme date d'expiration :

{

   "Statement":[

      {

         "Resource":"https://d123example.cloudfront.net/index.html",

         "Condition":{

            "DateLessThan":{

               "AWS:EpochTime": 1467244800

            }

         }

      }

   ]

}

3. Supprimez tous les espaces avec les commandes "cat" et"tr" :

> cat policy.json | tr -d " \t\n\r"

{"Statement":[{"Resource":"https://d123example.cloudfront.net/index.html","Condition":{"DateLessThan":{"AWS:EpochTime":1467244800}}}]}

4. Encodez le texte au format base64 et remplacez les caractères non pris en charge. Vous obtenez ainsi la valeur du cookie de stratégie Amazon CloudFront :

> cat policy.json |base64 |tr '+=/' '-_~'

5. Créez une signature à l'aide de la clé privée Amazon CloudFront, convertissez-la au format base64 et remplacez les caractères non pris en charge. Vous obtenez ainsi la valeur du cookie de signature Amazon CloudFront :

> cat policy.json | openssl sha1 -sign CloudFront_Key.pem |base64 |tr '+=/' '-_~'

ZmKpEDq0AyMwhW6V-seB61zvpGvEsQo2HdOBJQs2qdblimiwtY9clXk4N9odyKu4ACl8nmYQ2ufBXsHcZTecGFS7apNWttORlKYiDJGlgBVQ8XGXF3SXO~buiR3UdqHd6K5-YdwZL1UZMFMSpZb3HNKYetT5Su5Koeq0Vl11smNrz76dsbY-ialGsVYkf4seoMR65UJhLq7TrspHZLEXl7I6SEA7FC7gKQP7-g8vACuZ1jpvniqaJoQphzcV4VWfxLZKifLA9GzjtARJaGqYjNrWkWmTIJ3wFTurMmwTId9~MFfDGwcNULerMKkgKotY630c~T4TpVQFpmwijCoQbg__

 

6. Procurez-vous l'ID de clé d'accès de la paire de clés Amazon CloudFront sur https://portal.aws.amazon.com/gp/aws/securityCredentials. Il s'agit de la valeur que vous spécifiez pour le cookie d'ID de paire de clés Amazon CloudFront.

7. Pour vérifier que vous pouvez utiliser les cookies signés Amazon CloudFront pour accéder à l'origine S3, exécutez la commande curl –v et spécifiez les paramètres ci-dessous :

a. Un en-tête HTTP contenant le cookie encodé au format base64 et créé à l'étape 4. Délimitez cet en-tête avec des guillemets simples. Voici ce à quoi le premier paramètre devrait ressembler :

-H 'Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9kM2J4Y2k1emplNGJvNi5jbG91ZGZyb250Lm5ldC9pbmRleC5odG1sIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNDQyMTgwMTYxfX19XX0KCg__'

b. Un en-tête HTTP contenant la signature encodée au format base64 et créée à l'étape 5. Délimitez cet en-tête avec des guillemets simples. Voici ce à quoi le deuxième paramètre devrait ressembler :

-H 'Cookie: CloudFront-Signature=ZmKpEDq0AyMwhW6V-seB61zvpGvEsQo2HdOBJQs2qdblimiwtY9clXk4N9odyKu4ACl8nmYQ2ufBXsHcZTecGFS7apNWttORlKYiDJGlgBVQ8XGXF3SXO~buiR3UdqHd6K5-YdwZL1UZMFMSpZb3HNKYetT5Su5Koeq0Vl11smNrz76dsbY-ialGsVYkf4seoMR65UJhLq7TrspHZLEXl7I6SEA7FC7gKQP7-g8vACuZ1jpvniqaJoQphzcV4VWfxLZKifLA9GzjtARJaGqYjNrWkWmTIJ3wFTurMmwTId9~MFfDGwcNULerMKkgKotY630c~T4TpVQFpmwijCoQbg__'

c. Un en-tête HTTP contenant l'ID de clé d'accès de la paire de clés Amazon CloudFront, généré à l'étape 6. Délimitez cet en-tête avec des guillemets simples. Voici ce à quoi le troisième paramètre devrait ressembler :

-H 'Cookie: CloudFront-Key-Pair-Id=XXXXXXXXXXXXXXXXXXX'

d. L'URL Amazon CloudFront comme quatrième paramètre. Exemple :

https://d123example.cloudfront.net/index.html

Si vous réunissez tous ces paramètres, la commande et le résultat devraient ressembler à ce qui suit :

> curl -v -H 'Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9kM2J4Y2k1emplNGJvNi5jbG91ZGZyb250Lm5ldC9pbmRleC5odG1sIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNDQyMTgwMTYxfX19XX0_' -H 'Cookie: CloudFront-Signature=ZmKpEDq0AyMwhW6V-seB61zvpGvEsQo2HdOBJQs2qdblimiwtY9clXk4N9odyKu4ACl8nmYQ2ufBXsHcZTecGFS7apNWttORlKYiDJGlgBVQ8XGXF3SXO~buiR3UdqHd6K5-YdwZL1UZMFMSpZb3HNKYetT5Su5Koeq0Vl11smNrz76dsbY-ialGsVYkf4seoMR65UJhLq7TrspHZLEXl7I6SEA7FC7gKQP7-g8vACuZ1jpvniqaJoQphzcV4VWfxLZKifLA9GzjtARJaGqYjNrWkWmTIJ3wFTurMmwTId9~MFfDGwcNULerMKkgKotY630c~T4TpVQFpmwijCoQbg__' -H 'Cookie: CloudFront-Key-Pair-Id=XXXXXXXXXXXXXXXXXXX' https://d123example.cloudfront.net/index.html

   

*  Trying 54.192.195.217...

* Connected to d123example.cloudfront.net (54.192.195.217) port 443 (#0)

* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

* Server certificate: *.cloudfront.net

* Server certificate: VeriSign Class 3 Secure Server CA - G3

* Server certificate: VeriSign Class 3 Public Primary Certification Authority - G5

> GET /index.html HTTP/1.1

> Host: d123example.cloudfront.net

> User-Agent: curl/7.43.0

> Accept: */*

> Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9kM2J4Y2k1emplNGJvNi5jbG91ZGZyb250Lm5ldC9pbmRleC5odG1sIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNDQyMTgwMTYxfX19XX0KCg__

> Cookie: CloudFront-Signature=ZmKpEDq0AyMwhW6V-seB61zvpGvEsQo2HdOBJQs2qdblimiwtY9clXk4N9odyKu4ACl8nmYQ2ufBXsHcZTecGFS7apNWttORlKYiDJGlgBVQ8XGXF3SXO~buiR3UdqHd6K5-YdwZL1UZMFMSpZb3HNKYetT5Su5Koeq0Vl11smNrz76dsbY-ialGsVYkf4seoMR65UJhLq7TrspHZLEXl7I6SEA7FC7gKQP7-g8vACuZ1jpvniqaJoQphzcV4VWfxLZKifLA9GzjtARJaGqYjNrWkWmTIJ3wFTurMmwTId9~MFfDGwcNULerMKkgKotY630c~T4TpVQFpmwijCoQbg__

> Cookie: CloudFront-Key-Pair-Id=XXXXXXXXXXXXXXXXXXX

>  

< HTTP/1.1 200 OK

< Content-Type: text/html

< Content-Length: 0

< Connection: keep-alive

< Date: Tue, 08 Sep 2015 02:35:48 GMT

< x-amz-version-id: Wlbf4ymWu_qaa_tHHtAggtKe01HbiRM3

< Last-Modified: Tue, 08 Sep 2015 02:21:16 GMT

< ETag: "d41d8cd98f00b204e9800998ecf8427e"

< Accept-Ranges: bytes

< Server: AmazonS3

< Age: 1022

< X-Cache: Hit from cloudfront

< Via: 1.1 d123example.cloudfront.net (CloudFront)

< X-Amz-Cf-Id: eXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXNw2ey5limCuzkQ==

<  

<  

Index


Félicitations ! Vous êtes inscrit !


Amazon CloudFront, cookies signés, limiter l'accès, origine S3, contenu privé


Cette page vous a-t-elle été utile ? Oui | Non

Retour au Centre de connaissances AWS Support

Vous avez besoin d'aide ? Consultez le site du Centre AWS Support

Date de publication : 29/02/2016