

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.

# Appliquer une version minimale de TLS dans le AWS SDK pour C\+\+
<a name="enforcing-tls"></a>

Pour renforcer la sécurité lors de la communication avec AWS les services, vous devez configurer le SDK pour C\+\+ afin qu'il utilise TLS 1.2 ou version ultérieure. Nous recommandons TLS 1.3.

 AWS SDK pour C\+\+ Il s'agit d'une bibliothèque multiplateforme. Vous pouvez créer et exécuter votre application sur les plateformes de votre choix. Les différentes plateformes peuvent dépendre de différents clients HTTP sous-jacents.

Par défaut, macOS, Linux, Android et les autres plateformes autres que Windows utilisent [libcurl](https://curl.haxx.se/libcurl/). Si la version de libcurl est ultérieure à 7.34.0, TLS 1.0 est la version minimale utilisée par les clients HTTP sous-jacents.

Pour Windows, la bibliothèque par défaut est [WinHttp](https://docs.microsoft.com/en-us/windows/win32/winhttp). Windows décide du protocole à utiliser parmi les protocoles TLS 1.0, TLS 1.1, TLS 1.2 et TLS 1.3 disponibles. [Win INet](https://docs.microsoft.com/en-us/windows/win32/wininet) et [IXMLHttpRequest2](https://docs.microsoft.com/en-us/windows/win32/api/_ixhr2) sont les deux autres options disponibles sous Windows. Vous pouvez configurer votre application pour remplacer la bibliothèque par défaut pendant CMake et pendant l'exécution. Pour ces deux clients HTTP, Windows décide également du protocole sécurisé.

 AWS SDK pour C\+\+ Il offre également la possibilité de remplacer les clients HTTP par défaut. Par exemple, vous pouvez appliquer libcurl ou utiliser les clients HTTP de votre choix en utilisant une fabrique de clients HTTP personnalisée. Donc, pour utiliser TLS 1.2 comme version minimale, vous devez connaître la bibliothèque cliente HTTP que vous utilisez.

## Appliquer une version TLS spécifique avec libcurl sur toutes les plateformes
<a name="enforce-tls-1-2-with-libcurl-on-all-platforms"></a>

Cette section suppose que libcurl AWS SDK pour C\+\+ est utilisé comme dépendance pour la prise en charge du protocole HTTP. Pour spécifier explicitement la version TLS, vous aurez besoin d'une version minimale de libcurl 7.34.0. En outre, vous devrez peut-être modifier le code source du, AWS SDK pour C\+\+ puis le reconstruire.

La procédure suivante explique comment effectuer ces tâches.

### Pour appliquer le protocole TLS 1.2 avec libcurl
<a name="to-enforce-tls-1-2-with-libcurl"></a>

1. Vérifiez que votre installation de libcurl est au moins 7.34.0.

1. Téléchargez le code source AWS SDK pour C\+\+ du formulaire [GitHub](http://github.com/aws/aws-sdk-cpp).

1. Ouvrez `aws-cpp-sdk-core/source/http/curl/CurlHttpClient.cpp` et recherchez les lignes de code suivantes.

   ```
   #if LIBCURL_VERSION_MAJOR >= 7
   #if LIBCURL_VERSION_MINOR >= 34
   curl_easy_setopt(connectionHandle, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
   #endif //LIBCURL_VERSION_MINOR
   #endif //LIBCURL_VERSION_MAJOR
   ```

1. Si nécessaire, modifiez le dernier paramètre de l'appel de fonction comme suit.

   ```
   #if LIBCURL_VERSION_MAJOR >= 7
   #if LIBCURL_VERSION_MINOR >= 34
   curl_easy_setopt(connectionHandle, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
   #endif //LIBCURL_VERSION_MINOR
   #endif //LIBCURL_VERSION_MAJOR
   ```

1. Si vous avez effectué les modifications de code précédentes, compilez et installez le AWS SDK pour C\+\+ conformément aux instructions indiquées à la section [https://github.com/aws/aws-sdk-cpp\# building-the-sdk](https://github.com/aws/aws-sdk-cpp#building-the-sdk).

1. Pour le client de service de votre application, `verifySSL` activez-le dans sa configuration client, si cette option n'est pas déjà activée.

### Pour appliquer le protocole TLS 1.3 avec libcurl
<a name="to-enforce-tls-1-3-with-libcurl"></a>

Pour appliquer le protocole TLS 1.3, suivez les étapes de la section précédente en définissant l'`CURL_SSLVERSION_TLSv1_3`option au lieu de`CURL_SSLVERSION_TLSv1_2`.

## Appliquer une version TLS spécifique sous Windows
<a name="enforce-tls-1-2-on-windows"></a>

Les procédures suivantes vous montrent comment appliquer le protocole TLS 1.2 ou le protocole TLS 1.3 avec WinHttpINet, Win ou. IXMLHTTPRequest2

### Prérequis : Déterminer la prise en charge de Windows TLS
<a name="prerequisite-enable-tls-1-1-and-1-2-on-windows"></a>
+ Déterminez la version du protocole TLS prise en charge par votre système, comme décrit à l'adresse [https://docs.microsoft.com/en-us/windows/win32/secauthn/protocols- in-tls-ssl —schannel-ssp](https://docs.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-) -.
+ Si vous utilisez Windows 7 SP1 ou Windows Server 2008 R2 SP1, vous devez vous assurer que le support TLS 1.2 est activé dans le registre, comme décrit dans [https://docs.microsoft.com/en-us/windows- server/security/tls/tls -registry-settings \#tls -12](https://docs.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-12). Si vous exécutez une distribution antérieure, vous devez mettre à niveau votre système d'exploitation. 

### Pour appliquer le protocole TLS 1.2 ou TLS 1.3 avec WinHttp
<a name="to-enforce-tls-1-2-with-winhttp"></a>

WinHttp fournit une API pour définir explicitement les protocoles sécurisés acceptables. Toutefois, pour que cela soit configurable au moment de l'exécution, vous devez modifier le code source du, AWS SDK pour C\+\+ puis le reconstruire.

1. Téléchargez le code source AWS SDK pour C\+\+ du formulaire [GitHub](http://github.com/aws/aws-sdk-cpp).

1. Ouvrez `aws-cpp-sdk-core/source/http/windows/WinHttpSyncHttpClient.cpp` et recherchez les lignes de code suivantes.

   ```
   #if defined(WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_3)
       DWORD flags = WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 | WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 |
               WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 | WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_3;
   #else
       DWORD flags = WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 | WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 | WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2;
   #endif
   
   if (!WinHttpSetOption(GetOpenHandle(), WINHTTP_OPTION_SECURE_PROTOCOLS, &flags, sizeof(flags)))
   {
       AWS_LOGSTREAM_FATAL(GetLogTag(), "Failed setting secure crypto protocols with error code: " << GetLastError());
   }
   ```

   L'indicateur d'`WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_3`option est défini si le protocole TLS 1.3 est présent sur le système de construction actuel. [Pour plus d'informations, consultez [WINHTTP\_OPTION\_SECURE\_PROTOCOLS et le support des versions du protocole](https://learn.microsoft.com/en-us/windows/win32/winhttp/option-flags#winhttp_option_secure_protocols) TLS sur le site Web de Microsoft.](https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-#tls-protocol-version-support)

1. Sélectionnez l’une des méthodes suivantes :
   + **Pour appliquer le protocole TLS 1.2 :**

     Dans le cadre de la `#else` directive, modifiez la valeur de la `flags` variable comme suit.

     ```
     DWORD flags = WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2;
     ```
   + **Pour appliquer le protocole TLS 1.3 :**

     Dans le cadre de la `#if defined(WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_3)` directive, modifiez la valeur de la `flags` variable comme suit.

     ```
     DWORD flags = WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_3;
     ```

1. Si vous avez effectué les modifications de code précédentes, compilez et installez le AWS SDK pour C\+\+ conformément aux instructions indiquées à la section [https://github.com/aws/aws-sdk-cpp\# building-the-sdk](https://github.com/aws/aws-sdk-cpp#building-the-sdk).

1. Pour le client de service de votre application, `verifySSL` activez-le dans sa configuration client, si cette option n'est pas déjà activée.

### Pour appliquer le protocole TLS 1.2 avec Win INet et IXMLHTTPRequest2
<a name="to-enforce-tls-1-2-with-wininet-and-ixmlhttprequest2"></a>

Il n'existe aucune API pour spécifier le protocole sécurisé pour le Win INet et IXMLHTTPRequest2 les bibliothèques. Il AWS SDK pour C\+\+ utilise donc la valeur par défaut pour le système d'exploitation. Vous pouvez mettre à jour le registre Windows pour imposer l'utilisation de TLS 1.2, comme indiqué dans la procédure suivante. Sachez cependant que le résultat est un changement global qui impacte toutes les applications qui dépendent de Schannel.

1. Ouvrez l'éditeur de registre et accédez à`Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols`.

1. S'ils n'existent pas déjà, créez les sous-clés suivantes : `TLS 1.0,``TLS 1.1`, et`TLS 1.2`.

1. Sous chacune des sous-clés, créez une `Client` sous-clé et une `Server` sous-clé.

1. Créez les clés et les valeurs suivantes.

   ```
    Key name                          Key type   Value
    --------                          ---------  -----
    TLS 1.0\Client\DisabledByDefault  DWORD      0
    TLS 1.1\Client\DisabledByDefault  DWORD      0
    TLS 1.2\Client\DisabledByDefault  DWORD      0
    TLS 1.0\Client\Enabled            DWORD      0
    TLS 1.1\Client\Enabled            DWORD      0
    TLS 1.2\Client\Enabled            DWORD      1
   ```

   Notez que `TLS 1.2\Client\Enabled` c'est la seule touche définie sur 1. La définition de cette clé sur 1 fait du protocole TLS 1.2 le seul protocole sécurisé acceptable.

### Pour appliquer le protocole TLS 1.3 avec Win INet et IXMLHTTPRequest2
<a name="to-enforce-tls-1-3-with-wininet-and-ixmlhttprequest2"></a>

Il n'existe aucune API pour spécifier le protocole sécurisé pour le Win INet et IXMLHTTPRequest2 les bibliothèques. Il AWS SDK pour C\+\+ utilise donc la valeur par défaut pour le système d'exploitation. Vous pouvez mettre à jour le registre Windows pour imposer l'utilisation de TLS 1.3, comme indiqué dans la procédure suivante. Sachez cependant que le résultat est un changement global qui impacte toutes les applications qui dépendent de Schannel.

1. Ouvrez l'éditeur de registre et accédez à`Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols`.

1. S'ils n'existent pas déjà, créez les sous-clés suivantes : `TLS 1.0,``TLS 1.1`, `TLS 1.2` et`TLS 1.3`.

1. Sous chacune des sous-clés, créez une `Client` sous-clé et une `Server` sous-clé.

1. Créez les clés et les valeurs suivantes.

   ```
    Key name                          Key type   Value
    --------                          ---------  -----
    TLS 1.0\Client\DisabledByDefault  DWORD      0
    TLS 1.1\Client\DisabledByDefault  DWORD      0
    TLS 1.2\Client\DisabledByDefault  DWORD      0
    TLS 1.3\Client\DisabledByDefault  DWORD      0
    TLS 1.0\Client\Enabled            DWORD      0
    TLS 1.1\Client\Enabled            DWORD      0
    TLS 1.2\Client\Enabled            DWORD      0
    TLS 1.3\Client\Enabled            DWORD      1
   ```

   Notez que `TLS 1.3\Client\Enabled` c'est la seule touche définie sur 1. La définition de cette clé sur 1 fait de TLS 1.3 le seul protocole sécurisé acceptable.