

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Définition de cookies signés utilisant une politique personnalisée
<a name="private-content-setting-signed-cookie-custom-policy"></a>

Pour définir un cookie signé qui utilise une politique personnalisée, effectuez la procédure suivante.<a name="private-content-setting-signed-cookie-custom-policy-procedure"></a>

**Pour définir un cookie signé utilisant une politique personnalisée**

1. Si vous utilisez .NET ou Java pour créer des fichiers signés URLs, et si vous n'avez pas reformaté la clé privée de votre paire de clés du format .pem par défaut à un format compatible avec .NET ou Java, faites-le maintenant. Pour de plus amples informations, veuillez consulter [Reformatage de la clé privée (.NET et Java uniquement)](private-content-trusted-signers.md#private-content-reformatting-private-key).

1. Programmez votre application pour qu'elle envoie trois `Set-Cookie` en-têtes aux utilisateurs approuvés (ou quatre, si vous souhaitez spécifier un algorithme de hachage). Vous avez besoin de trois `Set-Cookie` en-têtes car chaque `Set-Cookie` en-tête ne peut contenir qu'une seule paire nom-valeur, et un cookie CloudFront signé nécessite trois paires nom-valeur. Les paires nom-valeur sont : `CloudFront-Policy`, `CloudFront-Signature` et `CloudFront-Key-Pair-Id`. Vous pouvez éventuellement inclure une quatrième paire nom-valeur pour spécifier l'algorithme de hachage utilisé pour la signature. `CloudFront-Hash-Algorithm` Les valeurs doivent être présentes sur la visionneuse avant qu’un utilisateur ne puisse faire la requête d’un fichier dont vous voulez contrôler l’accès. 
**Note**  
En règle générale, nous recommandons d’exclure les attributs `Expires` et `Max-Age`. Cette exclusion conduit le navigateur à supprimer le cookie quand l’utilisateur ferme le navigateur, ce qui réduit la possibilité qu’une personne obtienne un accès non autorisé à votre contenu. Pour plus d’informations, consultez [Prévention du mauvais usage des cookies signés](private-content-signed-cookies.md#private-content-signed-cookie-misuse).

   **Les noms des attributs de cookie sont sensibles à la casse**. 

   Les sauts de ligne ne sont inclus que pour rendre les attributs plus lisibles.

   ```
   Set-Cookie: 
   CloudFront-Policy=base64 encoded version of the policy statement; 
   Domain=optional domain name; 
   Path=/optional directory path; 
   Secure; 
   HttpOnly
   
   
   Set-Cookie: 
   CloudFront-Signature=hashed and signed version of the policy statement; 
   Domain=optional domain name; 
   Path=/optional directory path; 
   Secure; 
   HttpOnly
   
   Set-Cookie: 
   CloudFront-Key-Pair-Id=public key ID for the CloudFront public key whose corresponding private key you're using to generate the signature; 
   Domain=optional domain name; 
   Path=/optional directory path; 
   Secure; 
   HttpOnly
   
   Set-Cookie: 
   CloudFront-Hash-Algorithm=SHA1 or SHA256; 
   Domain=optional domain name; 
   Path=/optional directory path; 
   Secure; 
   HttpOnly
   ```  
**(Facultatif) `Domain` **  
Nom de domaine du fichier demandé. Si vous ne spécifiez pas un attribut `Domain`, la valeur par défaut est le nom de domaine de l’URL et ne s’applique qu’au nom de domaine spécifié, non aux sous-domaines. Si vous spécifiez un attribut `Domain`, il s’applique aussi aux sous-domaines. Un point devant le nom de domaine (par exemple, `Domain=.example.com`) est facultatif. De plus, si vous spécifiez un attribut `Domain`, le nom de domaine de l’URL et la valeur de l’attribut `Domain` doivent correspondre.  
Vous pouvez spécifier le nom de domaine CloudFront attribué à votre distribution, par exemple d111111abcdef8.cloudfront.net, mais vous ne pouvez pas spécifier\$1.cloudfront.net pour le nom de domaine.  
Si vous souhaitez utiliser un autre nom de domaine tel que exemple.com dans URLs, vous devez ajouter le nom de domaine alternatif à votre distribution, que vous spécifiiez ou non l'`Domain`attribut. Pour plus d’informations, consultez [Noms de domaine alternatifs (CNAMEs)](DownloadDistValuesGeneral.md#DownloadDistValuesCNAME) dans la rubrique [Référence de tous les paramètres de distribution](distribution-web-values-specify.md).  
**(Facultatif) `Path` **  
Chemin d’accès du fichier demandé. Si vous ne spécifiez pas d’attribut `Path`, la valeur par défaut est le chemin d’accès de l’URL.  
**`Secure`**  
Nécessite que l’utilisateur chiffre les cookies avant d’envoyer une demande. Nous vous recommandons d'envoyer l'`Set-Cookie`en-tête via une connexion HTTPS pour vous assurer que les attributs du cookie sont protégés contre man-in-the-middle les attaques.  
**`HttpOnly`**  
Requiert que l’utilisateur n’envoie le cookie que dans les requêtes HTTP ou HTTPS.  
**`CloudFront-Policy`**  
Votre déclaration de politique au format JSON, avec suppression des espaces vide, puis encodage en base64. Pour de plus amples informations, veuillez consulter [Création d’une signature pour un cookie signé qui utilise une politique personnalisée](#private-content-custom-policy-signature-cookies).  
La déclaration de politique contrôle l’accès accordé par un cookie signé à un utilisateur. Elle inclut les fichiers auxquels l’utilisateur peut accéder, une date et une heure d’expiration, une date et une heure (facultatif) auxquelles l’URL devient valide et une adresse IP (facultatif) ou une plage d’adresses IP autorisées à accéder au fichier.  
**`CloudFront-Signature`**  
Version hachée, signée et encodée en base 64 de la déclaration de politique JSON. Pour de plus amples informations, veuillez consulter [Création d’une signature pour un cookie signé qui utilise une politique personnalisée](#private-content-custom-policy-signature-cookies).  
**`CloudFront-Key-Pair-Id`**  
L'ID d'une clé CloudFront publique, par exemple,`K2JCJMDEHXQW5F`. L'ID de clé publique indique CloudFront la clé publique à utiliser pour valider l'URL signée. CloudFrontcompare les informations de la signature avec celles de la déclaration de politique pour vérifier que l'URL n'a pas été falsifiée.  
Cette clé publique doit appartenir à un groupe de clés qui est un signataire approuvé dans la distribution. Pour de plus amples informations, veuillez consulter [Spécifiez les signataires autorisés à créer des cookies signés URLs et signés](private-content-trusted-signers.md).  
**`CloudFront-Hash-Algorithm`**  
(Facultatif) L'algorithme de hachage utilisé pour créer la signature. Les valeurs prises en charge sont `SHA1` et `SHA256`. Si vous n'incluez pas ce cookie, la CloudFront valeur par défaut est. `SHA1`

## Exemples d’en-têtes `Set-Cookie` pour les politiques personnalisées
<a name="example-set-cookie-headers-custom-policy"></a>

Consultez les exemples de paires d’en-têtes `Set-Cookie` suivants. 

Si vous souhaitez utiliser un autre nom de domaine tel que exemple.org dans URLs, vous devez ajouter le nom de domaine alternatif à votre distribution, que vous spécifiiez ou non l'`Domain`attribut. Pour plus d’informations, consultez [Noms de domaine alternatifs (CNAMEs)](DownloadDistValuesGeneral.md#DownloadDistValuesCNAME) dans la rubrique [Référence de tous les paramètres de distribution](distribution-web-values-specify.md).

**Example Exemple 1**  
Vous pouvez utiliser `Set-Cookie` les en-têtes d'un cookie signé lorsque vous utilisez le nom de domaine associé à votre distribution dans URLs vos fichiers.  

```
Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Hash-Algorithm=SHA256; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
```

**Example Exemple 2**  
Vous pouvez utiliser `Set-Cookie` les en-têtes d'un cookie signé lorsque vous utilisez un autre nom de domaine (exemple.org) URLs pour vos fichiers.  

```
Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=example.org; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=example.org; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Hash-Algorithm=SHA256; Domain=example.org; Path=/; Secure; HttpOnly
```

**Example Exemple 3**  
Vous pouvez utiliser les paires d'`Set-Cookie`en-têtes pour une demande signée lorsque vous utilisez le nom de domaine associé à votre distribution dans vos fichiers. URLs   

```
Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=dd111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Hash-Algorithm=SHA256; Domain=d111111abcdef8.cloudfront.net; Path=/; Secure; HttpOnly
```

**Example Exemple 4**  
Vous pouvez utiliser les paires `Set-Cookie` d'en-têtes pour une demande signée lorsque vous utilisez un autre nom de domaine (exemple.org) associé à votre distribution dans le fichier URLs pour vos fichiers.  

```
Set-Cookie: CloudFront-Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cDovL2QxMTExMTFhYmNkZWY4LmNsb3VkZnJvbnQubmV0L2dhbWVfZG93bmxvYWQuemlwIiwiQ29uZGl0aW9uIjp7IklwQWRkcmVzcyI6eyJBV1M6U291cmNlSXAiOiIxOTIuMC4yLjAvMjQifSwiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE0MjY1MDAwMDB9fX1dfQ__; Domain=example.org; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Signature=dtKhpJ3aUYxqDIwepczPiDb9NXQ_; Domain=example.org; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Key-Pair-Id=K2JCJMDEHXQW5F; Domain=example.org; Path=/; Secure; HttpOnly
Set-Cookie: CloudFront-Hash-Algorithm=SHA256; Domain=example.org; Path=/; Secure; HttpOnly
```

## Création d’une déclaration de politique pour un cookie signé qui utilise une politique personnalisée
<a name="private-content-custom-policy-statement-cookies"></a>

Pour créer une déclaration de politique pour une politique personnalisée, effectuez la procédure suivante. Pour obtenir des exemples de déclaration de politique qui contrôlent l’accès aux fichiers de différentes façons, consultez [Exemple d’une déclaration de politique pour un cookie signé qui utilise une politique personnalisée](#private-content-custom-policy-statement-signed-cookies-examples).<a name="private-content-custom-policy-statement-cookies-procedure"></a>

**Pour créer la déclaration de politique d’un cookie signé qui utilise une politique personnalisée**

1. Construisez la déclaration de politique à l’aide du format JSON suivant.

   ```
   {
       "Statement": [
           {
               "Resource": "URL of the file",
               "Condition": {
                   "DateLessThan": {
                       "AWS:EpochTime":required ending date and time in Unix time format and UTC
                   },
                   "DateGreaterThan": {
                       "AWS:EpochTime":optional beginning date and time in Unix time format and UTC
                   },
                   "IpAddress": {
                       "AWS:SourceIp": "optional IP address"
                   }
               }
           }
       ]
   }
   ```

   Remarques :
   + Vous pouvez inclure une seule instruction.
   + Utilisez l’encodage de caractères UTF-8.
   + Incluez la ponctuation et les noms de paramètre exactement comme spécifié. Les abréviations ne sont pas acceptées pour les noms de paramètre.
   + L’ordre des paramètres de la section `Condition` n’importe pas.
   + Pour plus d’informations sur les valeurs de `Resource`, `DateLessThan`, `DateGreaterThan` et `IpAddress`, consultez [Valeurs que vous spécifiez dans la déclaration de politique d’une politique personnalisée pour les cookies signés](#private-content-custom-policy-statement-cookies-values).

1. Supprimez tous les espaces vides (tabulations et sauts de ligne inclus) de la déclaration de politique. Il se peut que vous ayez à inclure des caractères d’échappement dans la chaîne du code d’application.

1. Encodez en base64 la déclaration de politique à l’aide de l’encodage MIME base64. Pour plus d'informations, consultez [la Section 6.8, Base64 Content-Transfer-Encoding](https://tools.ietf.org/html/rfc2045#section-6.8) dans la *RFC 2045, MIME (extensions de messagerie Internet polyvalentes), première partie : Format des* corps de messages Internet.

1. Remplacez les caractères non valides d’une chaîne de requête d’URL par les caractères valides. Le tableau suivant répertorie les caractères valides et non valides.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonCloudFront/latest/DeveloperGuide/private-content-setting-signed-cookie-custom-policy.html)

1. Incluez la valeur obtenue dans votre en-tête `Set-Cookie` après `CloudFront-Policy=`.

1. Créez une signature pour l’en-tête `Set-Cookie` de `CloudFront-Signature` en hachant, signant et encodant en base64 la déclaration de politique. Pour plus d’informations, consultez [Création d’une signature pour un cookie signé qui utilise une politique personnalisée](#private-content-custom-policy-signature-cookies).

### Valeurs que vous spécifiez dans la déclaration de politique d’une politique personnalisée pour les cookies signés
<a name="private-content-custom-policy-statement-cookies-values"></a>

Lorsque vous créez une déclaration de politique pour une politique personnalisée, vous spécifiez les valeurs suivantes.

**Ressource**  
L’URL de base incluant vos chaînes de requête, le cas échéant :  
`https://d111111abcdef8.cloudfront.net/images/horizon.jpg?size=large&license=yes`  
Si vous omettez le paramètre `Resource`, les utilisateurs peuvent accéder à tous les fichiers associés à une distribution elle-même associée à la paire de clés que vous utilisez pour créer l’URL signée.
Vous ne pouvez spécifier qu’une seule valeur pour `Resource`.  
Remarques :  
+ **Protocole** : la valeur doit commencer par `http://` ou `https://`.
+ **Paramètres de chaîne de requête** : si vous n’avez aucun paramètre de chaîne de requête, omettez le point d’interrogation.
+ **Caractères génériques** : vous pouvez utiliser à tout moment dans la chaîne, le caractère générique qui correspond à zéro caractère ou plus (\$1) ou celui qui correspond exactement à un seul caractère (?). Par exemple, la valeur :

  `https://d111111abcdef8.cloudfront.net/*game_download.zip*`

  inclut (par exemple) les fichiers suivants :
  + `https://d111111abcdef8.cloudfront.net/game_download.zip`
  + `https://d111111abcdef8.cloudfront.net/example_game_download.zip?license=yes`
  + `https://d111111abcdef8.cloudfront.net/test_game_download.zip?license=temp`
+ **Noms de domaine alternatifs** : si vous spécifiez un nom de domaine alternatif (CNAME) dans l’URL, vous devez le spécifier lorsque vous référencez le fichier dans votre page ou application web. Ne spécifiez pas l’URL Amazon S3 pour le fichier.

**DateLessThan**  
Date et heure d’expiration de l’URL au format horaire Unix (en secondes) et en heure UTC. N’entourez pas la valeur de points d’interrogation.  
Par exemple, la date 16 mars 2015 10 h 00 UTC est convertie en 1426500000 au format horaire Unix.  
Pour de plus amples informations, veuillez consulter [Quand CloudFront vérifie la date et l'heure d'expiration dans un cookie signé](private-content-signed-cookies.md#private-content-check-expiration-cookie).

**DateGreaterThan (Facultatif)**  
(Facultatif) Date et heure de début de l’URL au format horaire Unix (en secondes) et en heure UTC. Les utilisateurs ne sont pas autorisés à accéder au fichier avant la date et l’heure spécifiées. N’entourez pas la valeur de points d’interrogation. 

**IpAddress (Facultatif)**  
Adresse IP du client formulant la demande GET. Remarques :  
+ Pour autoriser une adresse IP à accéder au fichier, omettez le paramètre `IpAddress`.
+ Vous pouvez spécifier une adresse IP ou une plage d’adresses IP. Par exemple, vous pouvez définir la politique pour autoriser l’accès si l’adresse IP du client figure dans l’une des deux plages distinctes.
+ Pour autoriser l’accès depuis une seule adresse IP, vous spécifiez :

  `"`*IPv4 IP address*`/32"`
+ Vous devez spécifier les plages d'adresses IP au format IPv4 CIDR standard (par exemple,`192.0.2.0/24`). Pour plus d’informations, consultez *RFC 4632, Classless Inter-domain Routing (CIDR): The Internet Address Assignment and Aggregation Plan*, [https://tools.ietf.org/html/rfc4632](https://tools.ietf.org/html/rfc4632).
**Important**  
Les adresses IP au IPv6 format 2001:0 db 8:85 a3 : :8a2e : 0370:7334 ne sont pas prises en charge. 

  Si vous utilisez une politique personnalisée qui inclut`IpAddress`, n'activez pas IPv6 la distribution. Si vous souhaitez restreindre l'accès à certains contenus par adresse IP et répondre aux IPv6 demandes d'assistance pour d'autres contenus, vous pouvez créer deux distributions. Pour plus d’informations, consultez [Activer IPv6 (demandes du spectateur)](DownloadDistValuesGeneral.md#DownloadDistValuesEnableIPv6) dans la rubrique [Référence de tous les paramètres de distribution](distribution-web-values-specify.md).

## Exemple d’une déclaration de politique pour un cookie signé qui utilise une politique personnalisée
<a name="private-content-custom-policy-statement-signed-cookies-examples"></a>

Les exemples suivants de déclaration de politique montrent comment accéder à un fichier spécifique, à tous les objets d’un répertoire ou à tous les fichiers associés à un ID de paire de clés. Les exemples montrent aussi comment contrôler l’accès depuis une adresse IP individuelle ou une plage d’adresses IP, et comment empêcher les utilisateurs d’employer le cookie signé au-delà d’une date et heure spécifiées.

Si vous copiez et collez l’un de ces exemples, supprimez les espaces vides (y compris les tabulations et les sauts de ligne), remplacez les valeurs par vos propres valeurs et incluez un caractère de saut de ligne après l’accolade fermante ( \$1 ).

Pour de plus amples informations, veuillez consulter [Valeurs que vous spécifiez dans la déclaration de politique d’une politique personnalisée pour les cookies signés](#private-content-custom-policy-statement-cookies-values).

**Topics**
+ [Exemple de déclaration de politique : accès à un fichier à partir d’une plage d’adresses IP](#private-content-custom-policy-statement-signed-cookies-example-one-object)
+ [Exemple de déclaration de politique : accès à tous les fichiers d’un répertoire à partir d’une plage d’adresses IP](#private-content-custom-policy-statement-signed-cookies-example-all-objects)
+ [Exemple de déclaration de politique : accès à tous les fichiers associés à un ID de paire de clés à partir d’une adresse IP](#private-content-custom-policy-statement-signed-cookies-example-one-ip)

### Exemple de déclaration de politique : accès à un fichier à partir d’une plage d’adresses IP
<a name="private-content-custom-policy-statement-signed-cookies-example-one-object"></a>

L’exemple suivant de politique personnalisée dans un cookie signé spécifie qu’un utilisateur peut accéder au fichier `https://d111111abcdef8.cloudfront.net/game_download.zip` à partir des adresses IP de la plage `192.0.2.0/24` jusqu’au 1er janvier 2023 10 h 00 UTC :

```
{
    "Statement": [
        {
            "Resource": "https://d111111abcdef8.cloudfront.net/game_download.zip",
            "Condition": {
                "IpAddress": {
                    "AWS:SourceIp": "192.0.2.0/24"
                },
                "DateLessThan": {
                    "AWS:EpochTime": 1767290400
                }
            }
        }
    ]
}
```

### Exemple de déclaration de politique : accès à tous les fichiers d’un répertoire à partir d’une plage d’adresses IP
<a name="private-content-custom-policy-statement-signed-cookies-example-all-objects"></a>

L’exemple suivant de politique personnalisée vous permet de créer des cookies signés pour n’importe quel fichier du répertoire `training`, comme indiqué par le caractère générique \$1 du paramètre `Resource`. Les utilisateurs peuvent accéder au fichier depuis une adresse IP de la plage `192.0.2.0/24` jusqu’au 1er janvier 2013 10 h 00 UTC :

```
{
    "Statement": [
        {
            "Resource": "https://d111111abcdef8.cloudfront.net/training/*",
            "Condition": {
                "IpAddress": {
                    "AWS:SourceIp": "192.0.2.0/24"
                },
                "DateLessThan": {
                    "AWS:EpochTime": 1767290400
                }
            }
        }
    ]
}
```

Chaque cookie signé dans lequel vous utilisez cette politique inclut une URL de base qui identifie un fichier spécifique ; par exemple :

`https://d111111abcdef8.cloudfront.net/training/orientation.pdf`

### Exemple de déclaration de politique : accès à tous les fichiers associés à un ID de paire de clés à partir d’une adresse IP
<a name="private-content-custom-policy-statement-signed-cookies-example-one-ip"></a>

L’exemple suivant de politique personnalisée vous permet de définir des cookies signés pour tout fichier associé à une distribution, comme indiqué par le caractère générique \$1 du paramètre `Resource`. L’utilisateur doit employer l’adresse IP `192.0.2.10/32`. (La valeur `192.0.2.10/32` en notation CIDR fait référence à une seule adresse IP, `192.0.2.10`.) Les fichiers ne sont disponibles qu’entre le 1er janvier 2013 10 h 00 UTC et le 2 janvier 2013 10 h 00 UTC :

```
{
    "Statement": [
        {
            "Resource": "https://*",
            "Condition": {
                "IpAddress": {
                    "AWS:SourceIp": "192.0.2.10/32"
                },
                "DateGreaterThan": {
                    "AWS:EpochTime": 1767290400
                },
                "DateLessThan": {
                    "AWS:EpochTime": 1767376800
                }
            }
        }
    ]
}
```

Chaque cookie signé dans lequel vous utilisez cette politique inclut une URL de base qui identifie un fichier spécifique dans une CloudFront distribution spécifique, par exemple :

`https://d111111abcdef8.cloudfront.net/training/orientation.pdf`

Le cookie signé inclut aussi un ID de paire de clés, qui doit être associé à un groupe de clés approuvé de la distribution (d111111abcdef8.cloudfront.net) que vous spécifiez dans l’URL de base.

## Création d’une signature pour un cookie signé qui utilise une politique personnalisée
<a name="private-content-custom-policy-signature-cookies"></a>

La signature d’un cookie signé utilisant une politique personnalisée est une version hachée, signée et encodée en base64 de la déclaration de politique. 

Pour plus d’informations et d’exemples sur la façon de hacher, signer et encoder la déclaration de politique, consultez :
+ [Utilisation d’une commande Linux et OpenSSL pour le chiffrement et l’encodage en base64](private-content-linux-openssl.md)
+ [Exemples de code pour la création de la signature d’une URL signée](PrivateCFSignatureCodeAndExamples.md)

**Note**  
Les exemples liés utilisent SHA-1 par défaut. Pour utiliser SHA-256 à la place, remplacez `sha1` par `sha256` dans les commandes OpenSSL et incluez le cookie avec une valeur de`CloudFront-Hash-Algorithm`. `SHA256`<a name="private-content-custom-policy-signature-cookies-procedure"></a>

**Pour créer une signature pour un cookie signé en utilisant une politique personnalisée**

1. Utilisez la fonction de hachage SHA-1 ou SHA-256 et RSA pour hacher et signer la déclaration de politique JSON que vous avez créée dans la procédure. [Pour créer la déclaration de politique d’une URL signée qui utilise une politique personnalisée](private-content-creating-signed-url-custom-policy.md#private-content-custom-policy-creating-policy-procedure) Utilisez la version de la déclaration de politique qui n’inclut plus d’espaces vides, mais qui n’a pas encore été encodée en base64.

   Si vous utilisez SHA-256, vous devez inclure le `CloudFront-Hash-Algorithm` cookie avec une valeur de. `SHA256`

   Pour la clé privée requise par la fonction de hachage, utilisez une clé privée dont la clé publique se trouve dans un groupe de clés approuvé actif pour la distribution.
**Note**  
La méthode que vous utilisez pour hacher et signer la déclaration de politique dépend du langage de programmation et de la plateforme. Pour un exemple de code, consultez [Exemples de code pour la création de la signature d’une URL signée](PrivateCFSignatureCodeAndExamples.md).

1. Supprimez les espaces vides (tabulations et sauts de ligne inclus) de la chaîne hachée et signée.

1. Encodez en base64 la chaîne à l’aide de l’encodage MIME base64. Pour plus d'informations, consultez [la Section 6.8, Base64 Content-Transfer-Encoding](https://tools.ietf.org/html/rfc2045#section-6.8) dans la *RFC 2045, MIME (extensions de messagerie Internet polyvalentes), première partie : Format des* corps de messages Internet.

1. Remplacez les caractères non valides d’une chaîne de requête d’URL par les caractères valides. Le tableau suivant répertorie les caractères valides et non valides.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonCloudFront/latest/DeveloperGuide/private-content-setting-signed-cookie-custom-policy.html)

1. Incluez la valeur obtenue dans l’en-tête `Set-Cookie` de la paire nom-valeur `CloudFront-Signature=`, et retournez à [Pour définir un cookie signé utilisant une politique personnalisée](#private-content-setting-signed-cookie-custom-policy-procedure) pour ajouter l’en-tête `Set-Cookie` de `CloudFront-Key-Pair-Id`.