

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.

# Modification de l'en-tête HTTP pour votre Application Load Balancer
<a name="header-modification"></a>

La modification de l'en-tête HTTP est prise en charge par les équilibreurs de charge d'application, à la fois pour les en-têtes de demande et de réponse. Sans avoir à mettre à jour le code de votre application, la modification de l'en-tête vous permet de mieux contrôler le trafic et la sécurité de votre application.

Pour activer la modification de l'en-tête, voir[Activer la modification de l'en-tête](enable-header-modification.md).

## Renommer mTLS/TLS les en-têtes
<a name="rename-header"></a>

La fonctionnalité de renommage des en-têtes vous permet de configurer les noms des en-têtes MTL et TLS que l'Application Load Balancer génère et ajoute aux demandes.

Cette possibilité de modifier les en-têtes HTTP permet à votre Application Load Balancer de prendre facilement en charge les applications qui utilisent des en-têtes de demande et de réponse spécifiquement formatés.


| En-tête | Description | 
| --- | --- | 
|  X-Amzn-Mtls-Clientcert-Serial-Number  |  Garantit que la cible peut identifier et vérifier le certificat spécifique présenté par le client lors de la prise de contact TLS.  | 
|  X-Amzn-Mtls-Clientcert-Issuer  |  Aide la cible à valider et à authentifier le certificat client en identifiant l'autorité de certification qui a émis le certificat.  | 
|  X-Amzn-Mtls-Clientcert-Subject  |  Fournit à la cible des informations détaillées sur l'entité à laquelle le certificat client a été délivré, ce qui facilite l'identification, l'authentification, l'autorisation et la journalisation lors de l'authentification MTLS.  | 
|  X-Amzn-Mtls-Clientcert-Validity  |  Permet à la cible de vérifier que le certificat client utilisé respecte la période de validité définie, en veillant à ce que le certificat n'ait pas expiré ou n'ait pas été utilisé prématurément.  | 
|  X-Amzn-Mtls-Clientcert-Leaf  |  Fournit le certificat client utilisé dans le handshake mTLS, permettant au serveur d'authentifier le client et de valider la chaîne de certificats. Cela garantit que la connexion est sécurisée et autorisée.  | 
|  X-Amzn-Mtls-Clientcert  |  Porte le certificat client complet. Permettre à la cible de vérifier l'authenticité du certificat, de valider la chaîne de certificats et d'authentifier le client pendant le processus de prise de contact de MTL.  | 
|  X-Amzn-TLS-Version  |  Indique la version du protocole TLS utilisée pour une connexion. Il permet de déterminer le niveau de sécurité de la communication, de résoudre les problèmes de connexion et de garantir la conformité.  | 
|  X-Amzn-TLS-Cipher-Suite  |  Indique la combinaison d'algorithmes cryptographiques utilisés pour sécuriser une connexion dans le protocole TLS. Cela permet au serveur d'évaluer la sécurité de la connexion, de résoudre les problèmes de compatibilité et de garantir le respect des politiques de sécurité.  | 

## Ajouter des en-têtes de réponse
<a name="insert-header"></a>

À l'aide des en-têtes d'insertion, vous pouvez configurer votre Application Load Balancer pour ajouter des en-têtes liés à la sécurité aux réponses. Avec ces attributs, vous pouvez insérer des en-têtes tels que HSTS, CORS et CSP.

Par défaut, ces en-têtes sont vides. Dans ce cas, l'Application Load Balancer ne modifie pas cet en-tête de réponse.

Lorsque vous activez un en-tête de réponse, l'Application Load Balancer ajoute l'en-tête avec la valeur configurée à toutes les réponses. Si la réponse de la cible inclut l'en-tête de réponse HTTP, l'équilibreur de charge met à jour la valeur d'en-tête pour qu'elle soit la valeur configurée. Dans le cas contraire, l'équilibreur de charge ajoute l'en-tête de réponse HTTP à la réponse avec la valeur configurée.


| En-tête | Description | 
| --- | --- | 
|  Strict-Transport-Security  |  Applique les connexions HTTPS uniquement par le navigateur pendant une durée spécifiée, ce qui contribue à la protection contre les man-in-the-middle attaques, les rétrogradations de protocole et les erreurs des utilisateurs, en veillant à ce que toutes les communications entre le client et la cible soient cryptées.  | 
|  Access-Control-Allow-Origin  |  Contrôle si les ressources d'une cible sont accessibles depuis différentes origines. Cela permet de sécuriser les interactions entre origines tout en empêchant les accès non autorisés.  | 
|  Access-Control-Allow-Methods  |  Spécifie les méthodes HTTP autorisées lors de l'envoi de requêtes d'origine croisée à la cible. Il permet de contrôler quelles actions peuvent être effectuées à partir de différentes origines.  | 
|  Access-Control-Allow-Headers  |  Spécifie quels en-têtes personnalisés ou non simples peuvent être inclus dans une demande d'origine croisée. Cet en-tête permet aux cibles de contrôler quels en-têtes peuvent être envoyés par des clients d'origines différentes.  | 
|  Access-Control-Allow-Credentials  |  Spécifie si le client doit inclure des informations d'identification telles que les cookies, l'authentification HTTP ou les certificats client dans les demandes d'origine croisée.  | 
|  Access-Control-Expose-Headers  |  Permet à la cible de spécifier les en-têtes de réponse supplémentaires auxquels le client peut accéder dans le cadre de demandes d'origine croisée.  | 
|  Access-Control-Max-Age  |  Définit la durée pendant laquelle le navigateur peut mettre en cache le résultat d'une demande de pré-vol, réduisant ainsi le besoin de vérifications répétées avant le vol. Cela permet d'optimiser les performances en réduisant le nombre de requêtes OPTIONS requises pour certaines demandes d'origine croisée.  | 
|  Content-Security-Policy  |  Fonctionnalité de sécurité qui empêche les attaques par injection de code telles que XSS en contrôlant les ressources telles que les scripts, les styles, les images, etc. qui peuvent être chargées et exécutées par un site Web.  | 
|  X-Content-Type-Options  |  La directive no-sniff renforce la sécurité Web en empêchant les navigateurs de deviner le type MIME d'une ressource. Cela garantit que les navigateurs n'interprètent le contenu qu'en fonction du type de contenu déclaré  | 
|  X-Frame-Options  |  Mécanisme de sécurité des en-têtes qui aide à prévenir les attaques de click-jacking en contrôlant si une page Web peut être intégrée dans des cadres. Des valeurs telles que DENY et SAMEORIGIN peuvent garantir que le contenu n'est pas intégré sur des sites Web malveillants ou non fiables.  | 

## Désactiver les en-têtes
<a name="disable-header"></a>

À l'aide des en-têtes de désactivation, vous pouvez configurer votre Application Load Balancer pour désactiver `server:awselb/2.0` l'en-tête dans les réponses. Cela réduit l'exposition aux informations spécifiques au serveur, tout en ajoutant une couche de protection supplémentaire à votre application.

Le nom de l'attribut est`routing.http.response.server.enabled`. Les valeurs disponibles sont `true` ou`false`. La valeur par défaut est `true`.

## Limitations
<a name="header-modification-limits"></a>
+ Les valeurs d'en-tête peuvent contenir les caractères suivants
  + Caractères alphanumériques : `a-z``A-Z`, et `0-9`
  + Caractères spéciaux : `_ :;.,\/'?!(){}[]@<>=-+*#&`|~^%`
+ La valeur de l'attribut ne peut pas dépasser 1 000 octets.
+ Elastic Load Balancing effectue des validations d'entrée de base pour vérifier que la valeur de l'en-tête est valide. Cependant, la validation ne permet pas de confirmer si la valeur est prise en charge pour un en-tête spécifique.
+ La définition d'une valeur vide pour n'importe quel attribut entraînera le retour de l'Application Load Balancer au comportement par défaut.

# Activer la modification de l'en-tête HTTP pour votre Application Load Balancer
<a name="enable-header-modification"></a>

La modification de l'en-tête est désactivée par défaut et doit être activée sur chaque écouteur. Pour de plus amples informations, veuillez consulter [Modification de l'en-tête HTTP](header-modification.md).

------
#### [ Console ]

**Pour activer la modification de l'en-tête**

1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Dans le volet de navigation, choisissez **Load Balancers (Équilibreurs de charge)**.

1. Sélectionnez l'Application Load Balancer.

1. Dans l'onglet **Écouteurs et règles**, sélectionnez le protocole et le port pour ouvrir la page de détails de votre écouteur.

1. Dans l'onglet **Attributs**, sélectionnez **Modifier**.

   Les attributs du récepteur sont organisés en groupes. Vous choisirez les fonctionnalités à activer.

1. [Écouteurs HTTPS] Noms d'**en-tête modifiables mTLS/TLS **

   1. Développez les **noms d' mTLS/TLS en-têtes modifiables**.

   1. Activez les en-têtes de demande à modifier et donnez-leur un nom. Pour de plus amples informations, veuillez consulter [Renommer mTLS/TLS les en-têtes](header-modification.md#rename-header).

1. **Ajouter des en-têtes de réponse**

   1. Développez **Ajouter des en-têtes de réponse**.

   1. Activez les en-têtes de réponse pour leur ajouter et leur fournir des valeurs. Pour de plus amples informations, veuillez consulter [Ajouter des en-têtes de réponse](header-modification.md#insert-header).

1. **En-tête de réponse du serveur ALB**

   1. Activez ou désactivez l'**en-tête du serveur**.

1. Sélectionnez **Enregistrer les modifications**.

------
#### [ AWS CLI ]

**Pour activer la modification de l'en-tête**  
Utilisez la commande [modify-listener-attributes](https://docs.aws.amazon.com/cli/latest/reference/elbv2/modify-listener-attributes.html). Pour la liste des attributs, voir[Attributs de modification d'en-tête](#header-modification-attributes).

```
aws elbv2 modify-listener-attributes \
    --listener-arn listener-arn \
    --attributes "Key=attribute-name,Value=attribute-value"
```

------
#### [ CloudFormation ]

**Pour activer la modification de l'en-tête**  
Mettez à jour la [AWS::ElasticLoadBalancingV2::Listener](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-elasticloadbalancingv2-listener.html)ressource pour inclure les attributs. Pour la liste des attributs, voir[Attributs de modification d'en-tête](#header-modification-attributes).

```
Resources:
  myHTTPlistener:
  Type: 'AWS::ElasticLoadBalancingV2::Listener'
  Properties:
    LoadBalancerArn: !Ref myLoadBalancer
    Protocol: HTTP
    Port: 80
    DefaultActions:
      - Type: "forward"
        TargetGroupArn: !Ref myTargetGroup
    ListenerAttributes:
      - Key: "attribute-name"
        Value: "attribute-value"
```

------

## Attributs de modification d'en-tête
<a name="header-modification-attributes"></a>

Les attributs de modification d'en-tête pris en charge par les équilibreurs de charge d'application sont les suivants.

`routing.http.request.x_amzn_mtls_clientcert_serial_number.header_name`  
Modifiez le nom d'en-tête de **X-Amzn-Mtls-Clientcert-Serial-Number**.

`routing.http.request.x_amzn_mtls_clientcert_issuer.header_name`  
Modifiez le nom d'en-tête de **X-Amzn-Mtls-Clientcert-Issuer**.

`routing.http.request.x_amzn_mtls_clientcert_subject.header_name`  
Modifiez le nom d'en-tête de **X-Amzn-Mtls-Clientcert-Subject**.

`routing.http.request.x_amzn_mtls_clientcert_validity.header_name`  
Modifiez le nom d'en-tête de **X-Amzn-Mtls-Clientcert-Validity**.

`routing.http.request.x_amzn_mtls_clientcert_leaf.header_name`  
Modifiez le nom d'en-tête de **X-Amzn-Mtls-Clientcert-Leaf**.

`routing.http.request.x_amzn_mtls_clientcert.header_name`  
Modifiez le nom d'en-tête de **X-Amzn-Mtls-Clientcert**.

`routing.http.request.x_amzn_tls_version.header_name`  
Modifiez le nom d'en-tête de **X-Amzn-Tls-Version**.

`routing.http.request.x_amzn_tls_cipher_suite.header_name`  
Modifiez le nom d'en-tête de **X-Amzn-Tls-Cipher-Suite**.

`routing.http.response.server.enabled`  
Indique s'il faut autoriser ou supprimer l'en-tête du serveur de réponse HTTP.

`routing.http.response.strict_transport_security.header_value`  
Ajoutez l'en-tête **Strict-Transport-Security** pour informer les navigateurs que le site ne doit être accessible que via HTTPS et que toute future tentative d'accès via HTTP doit être automatiquement convertie en HTTPS.

`routing.http.response.access_control_allow_origin.header_value`  
Ajoutez l'en-tête **Access-Control-Allow-Origin** pour spécifier les origines autorisées à accéder au serveur.

`routing.http.response.access_control_allow_methods.header_value`  
Ajoutez l'en-tête **Access-Control-Allow-Methods pour spécifier les méthodes** HTTP autorisées lors de l'accès au serveur depuis une autre origine.

`routing.http.response.access_control_allow_headers.header_value`  
Ajoutez l'en-tête **Access-Control-Allow-Headers pour spécifier quels en-têtes sont** autorisés lors d'une demande d'origine croisée.

`routing.http.response.access_control_allow_credentials.header_value`  
Ajoutez l'en-tête **Access-Control-Allow-Credentials pour indiquer si le navigateur doit inclure des informations d'identification** telles que des cookies ou une authentification dans les demandes d'origine croisée.

`routing.http.response.access_control_expose_headers.header_value`  
Ajoutez l'en-tête **Access-Control-Expose-Headers pour indiquer les en-têtes** que le navigateur peut exposer au client demandeur.

`routing.http.response.access_control_max_age.header_value`  
Ajoutez l'en-tête **Access-Control-Max-Age** pour spécifier la durée pendant laquelle les résultats d'une demande de pré-vol peuvent être mis en cache, en secondes.

`routing.http.response.content_security_policy.header_value`  
Ajoutez l'en-tête **Content-Security-Policy** pour spécifier les restrictions appliquées par le navigateur afin de minimiser le risque de certains types de menaces de sécurité.

`routing.http.response.x_content_type_options.header_value`  
Ajoutez l'en-tête **X-Content-Type-Options** pour indiquer si les types MIME annoncés dans les en-têtes **Content-Type** doivent être suivis et ne pas être modifiés.

`routing.http.response.x_frame_options.header_value`  
**Ajoutez l'en-tête **X-Frame-Options** pour indiquer si le navigateur est autorisé à afficher une page dans un cadre, un ****iframe****, un **embed** ou un objet.**