

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.

# Proxy local
<a name="local-proxy"></a>

Le proxy local transmet les données envoyées par l'application exécutée sur le périphérique source en utilisant un tunneling sécurisé via une connexion WebSocket sécurisée. Vous pouvez télécharger la source du proxy local depuis [GitHub](https://github.com/aws-samples/aws-iot-securetunneling-localproxy). 

Le proxy local peut s'exécuter en deux modes : `source` ou `destination`. En mode source, le proxy local s'exécute sur le même appareil ou réseau que l'application cliente qui initie la connexion TCP. En mode destination, le proxy local s'exécute sur l'appareil distant, avec l'application de destination. Un seul tunnel peut prendre en charge jusqu'à trois flux de données à la fois en utilisant le multiplexage par tunnel. Pour chaque flux de données, le tunneling sécurisé utilise plusieurs connexions TCP, ce qui réduit le risque de temporisation. Pour de plus amples informations, veuillez consulter [Multiplexez les flux de données et utilisez des connexions TCP simultanées dans un tunnel sécurisé](multiplexing.md).

# Comment utiliser le proxy local
<a name="how-use-local-proxy"></a>

Vous pouvez exécuter le proxy local sur les appareils source et de destination pour transmettre les données aux points de terminaison sécurisés du tunneling. Si vos appareils se trouvent dans un réseau utilisant un proxy Web, celui-ci peut intercepter les connexions avant de les rediriger vers Internet. Dans ce cas, vous devez configurer votre proxy local pour utiliser le proxy Web. Pour de plus amples informations, veuillez consulter [Configuration du proxy local pour les appareils utilisant un proxy Web](configure-local-proxy-web-proxy.md). 

## Flux de travail proxy local
<a name="local-proxy-workflow"></a>

Les étapes suivantes montrent comment le proxy local est exécuté sur les appareils source et de destination.

1. 

**Connect un proxy local pour un tunneling sécurisé**  
Tout d'abord, le proxy local doit établir une connexion pour sécuriser le tunnel. Lorsque vous démarrez le proxy local, utilisez les arguments suivants :
   + `-r`Argument permettant de spécifier l' Région AWS endroit dans lequel le tunnel est ouvert.
   + `-t` L'argument pour passer le jeton d'accès du client source ou de destination renvoyé par la fonction `OpenTunnel`.
**Note**  
Deux proxy locaux utilisant la même valeur de jeton d'accès client ne peuvent pas être connectés en même temps.

1. 

**Exécuter des actions à la source ou à la destination**  
Une fois la WebSocket connexion établie, le proxy local exécute des actions en mode source ou en mode destination, en fonction de sa configuration.

   Par défaut, le proxy local tente de se reconnecter au tunneling sécurisé en cas d'erreur input/output (E/S) ou en cas de fermeture inattendue de la WebSocket connexion. Cela provoque la fermeture de la connexion TCP. Si des erreurs de socket TCP se produisent, le proxy local envoie un message via le tunnel pour avertir l'autre partie de fermer sa connexion TCP. Par défaut, le proxy local utilise toujours la communication SSL.

1. 

**Arreter le proxy local**  
Après avoir utilisé le tunnel, il est prudent d'arrêter le processus de proxy local. Nous vous recommandons de fermer explicitement le tunnel en appelant `CloseTunnel`. Les clients du tunnel actifs peuvent ne pas être fermés juste après l'appel`CloseTunnel`.

Pour plus d'informations sur l'utilisation du AWS Management Console pour ouvrir un tunnel et démarrer une session SSH, consultez[Ouvrez un tunnel et démarrez une session SSH sur un appareil distant](secure-tunneling-tutorial-open-tunnel.md).

## Meilleures pratiques en matière de procuration locale
<a name="local-proxy-security"></a>

Lorsque vous utilisez le proxy local, suivez ces bonnes pratiques :
+ Évitez d'utiliser l'argument de proxy local `-t` pour transmettre un jeton d'accès. Nous vous recommandons d'utiliser la variable d'environnement `AWSIOT_TUNNEL_ACCESS_TOKEN` pour définir le jeton d'accès pour le proxy local.
+ Exécutez l'exécutable du proxy local avec moindres privilèges dans le système d'exploitation ou l'environnement.
  + Évitez d'exécuter le proxy local en tant qu'administrateur sous Windows.
  + Évitez d'exécuter le proxy local en tant que racine sur Linux et macOS.
+ Envisagez d'exécuter le proxy local sur des hôtes distincts, des conteneurs, des bacs à sable, une chroot jail ou un environnement virtualisé.
+ Créez le proxy local avec les indicateurs de sécurité pertinents correspondants à votre chaîne d'outils.
+ Sur les appareils dotés de plusieurs interfaces réseau, utilisez l'argument `-b` pour lier le socket TCP à l'interface réseau utilisée pour communiquer avec l'application de destination. 

## Exemple de commande et de sortie
<a name="example-cmd-output-localproxy"></a>

Vous pouvez voir ci-dessous un exemple de commande que vous exécutez et le résultat correspondant. L'exemple montre comment le proxy local peut être configuré dans `source` les deux `destination` modes. Le proxy local met à niveau le protocole HTTPS WebSockets pour établir une connexion de longue durée, puis commence à transmettre des données via la connexion aux points de terminaison du dispositif de tunneling sécurisé.

**Avant d'exécuter ces commandes :**  
Vous devez avoir ouvert un tunnel et obtenu les jetons d'accès client pour la source et la destination. Vous devez également avoir créé le proxy local comme décrit précédemment. Pour créer le proxy local, ouvrez le [code source du proxy local](https://github.com/aws-samples/aws-iot-securetunneling-localproxy) dans le GitHub référentiel et suivez les instructions de création et d'installation du proxy local.

**Note**  
Les commandes suivantes utilisées dans les exemples utilisent l'`verbosity`indicateur pour illustrer une vue d'ensemble des différentes étapes décrites précédemment après l'exécution du proxy local. Nous vous recommandons d'utiliser cet indicateur uniquement à des fins de test.

**Exécution d'un proxy local en mode source**  
Les commandes suivantes indiquent comment exécuter le proxy local en mode source.

------
#### [ Linux/macOS ]

Sous Linux ou macOS, exécutez les commandes suivantes dans le terminal pour configurer et démarrer le proxy local sur votre source.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
./localproxy -s 5555 -v 5 -r us-west-2
```

Où :
+ `-s` est le port d'écoute de la source, qui démarre le proxy local en mode source.
+ `-v` est la verbosité de la sortie, qui peut être une valeur comprise entre zéro et six.
+ `-r` est la région du point final où le tunnel est ouvert.

Pour plus d'informations sur les paramètres, voir [Options définies à l'aide d'arguments de ligne de commande](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments).

------
#### [ Windows ]

Sous Windows, vous configurez le proxy local de la même manière que pour Linux ou macOS, mais la façon dont vous définissez les variables d'environnement est différente de celle des autres plateformes. Exécutez les commandes suivantes dans la `cmd` fenêtre pour configurer et démarrer le proxy local sur votre source.

```
set AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
.\localproxy -s 5555 -v 5 -r us-west-2
```

Où :
+ `-s` est le port d'écoute de la source, qui démarre le proxy local en mode source.
+ `-v` est la verbosité de la sortie, qui peut être une valeur comprise entre zéro et six.
+ `-r` est la région du point final où le tunnel est ouvert.

Pour plus d'informations sur les paramètres, voir [Options définies à l'aide d'arguments de ligne de commande](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments).

------

**Note**  
Lorsque vous utilisez la dernière version du proxy local en mode source, vous devez inclure le AWS CLI paramètre `--destination-client-type V1` sur le périphérique source pour des raisons de rétrocompatibilité. Cela s'applique lors de la connexion à l'un de ces modes de destination :  
AWS IoT Client de l'appareil
AWS IoT Composant de tunneling sécurisé ou composant de tunneling AWS IoT Greengrass Version 2 sécurisé
Tout code de démonstration de AWS IoT Secure Tunneling écrit avant 2022
Versions 1.X du proxy local
Ce paramètre garantit une communication correcte entre le proxy source mis à jour et les anciens clients de destination. Pour plus d'informations sur les versions de proxy locales, voir [AWS IoT Secure Tunneling activé](https://github.com/aws-samples/aws-iot-securetunneling-localproxy/blob/main/README.md#as-of-312-may-2024-update---destination-client-type-v1-will-be-a-required-parameter-when-connecting-with-the-following). *GitHub*

Voici un exemple de sortie illustrant l'exécution du proxy local en `source` mode.

```
...
...

Starting proxy in source mode
Attempting to establish web socket connection with endpoint wss://data.tunneling.iot.us-west-2.amazonaws.com:443
Resolved proxy  server IP: 10.10.0.11
Connected successfully with proxy server
Performing SSL handshake with proxy server	
Successfully completed SSL handshake with proxy server
HTTP/1.1 101 Switching Protocols

...

Connection: upgrade
channel-id: 01234567890abc23-00001234-0005678a-b1234c5de677a001-2bc3d456
upgrade: websocket

...

Web socket session ID: 01234567890abc23-00001234-0005678a-b1234c5de677a001-2bc3d456
Web socket subprotocol selected: aws.iot.securetunneling-2.0
Successfully established websocket connection with proxy server: wss://data.tunneling.iot.us-west-2.amazonaws.com:443
Setting up web socket pings for every 5000 milliseconds
Scheduled next read:

...

Starting web socket read loop continue reading...
Resolved bind IP: 127.0.0.1
Listening for new connection on port 5555
```

**Exécution d'un proxy local en mode destination**  
Les commandes suivantes indiquent comment exécuter le proxy local en mode destination.

------
#### [ Linux/macOS ]

Sous Linux ou macOS, exécutez les commandes suivantes dans le terminal pour configurer et démarrer le proxy local sur votre destination.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
./localproxy -d 22 -v 5 -r us-west-2
```

Où :
+ `-d` est l'application de destination qui démarre le proxy local en mode destination.
+ `-v` est la verbosité de la sortie, qui peut être une valeur comprise entre zéro et six.
+ `-r` est la région du point final où le tunnel est ouvert.

Pour plus d'informations sur les paramètres, voir [Options définies à l'aide d'arguments de ligne de commande](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments).

------
#### [ Windows ]

Sous Windows, vous configurez le proxy local de la même manière que pour Linux ou macOS, mais la façon dont vous définissez les variables d'environnement est différente de celle des autres plateformes. Exécutez les commandes suivantes dans la `cmd` fenêtre pour configurer et démarrer le proxy local sur votre destination.

```
set AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
.\localproxy -d 22 -v 5 -r us-west-2
```

Où :
+ `-d` est l'application de destination qui démarre le proxy local en mode destination.
+ `-v` est la verbosité de la sortie, qui peut être une valeur comprise entre zéro et six.
+ `-r` est la région du point final où le tunnel est ouvert.

Pour plus d'informations sur les paramètres, voir [Options définies à l'aide d'arguments de ligne de commande](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments).

------

**Note**  
Lorsque vous utilisez la dernière version du proxy local en mode destination, vous devez inclure le AWS CLI paramètre `--destination-client-type V1` sur le périphérique de destination pour des raisons de rétrocompatibilité. Cela s'applique lors de la connexion à l'un de ces modes source :  
Tunneling sécurisé basé sur un navigateur depuis la console. AWS 
Versions 1.X du proxy local
Ce paramètre garantit une communication correcte entre le proxy de destination mis à jour et les anciens clients source. Pour plus d'informations sur les versions de proxy locales, voir [AWS IoT Secure Tunneling activé](https://github.com/aws-samples/aws-iot-securetunneling-localproxy/blob/main/README.md#as-of-312-may-2024-update---destination-client-type-v1-will-be-a-required-parameter-when-connecting-with-the-following). *GitHub*

Voici un exemple de sortie illustrant l'exécution du proxy local en `destination` mode.

```
...
...

Starting proxy in destination mode
Attempting to establish web socket connection with endpoint wss://data.tunneling.iot.us-west-2.amazonaws.com:443
Resolved proxy  server IP: 10.10.0.11
Connected successfully with proxy server
Performing SSL handshake with proxy server	
Successfully completed SSL handshake with proxy server
HTTP/1.1 101 Switching Protocols

...

Connection: upgrade
channel-id: 01234567890abc23-00001234-0005678a-b1234c5de677a001-2bc3d456
upgrade: websocket

...

Web socket session ID: 01234567890abc23-00001234-0005678a-b1234c5de677a001-2bc3d456
Web socket subprotocol selected: aws.iot.securetunneling-2.0
Successfully established websocket connection with proxy server: wss://data.tunneling.iot.us-west-2.amazonaws.com:443
Setting up web socket pings for every 5000 milliseconds
Scheduled next read:

...

Starting web socket read loop continue reading...
```

# Configuration du proxy local pour les appareils utilisant un proxy Web
<a name="configure-local-proxy-web-proxy"></a>

Vous pouvez utiliser un proxy local sur les AWS IoT appareils pour communiquer grâce à un tunneling AWS IoT APIs sécurisé. Le proxy local transmet les données envoyées par l'application de l'appareil à l'aide d'un tunneling sécurisé via une connexion WebSocket sécurisée. Le proxy local peut fonctionner en mode `destination` ou `source`. En `source` mode, il s'exécute sur le même appareil ou le même réseau que celui qui initie la connexion TCP. En `destination` mode, le proxy local s'exécute sur l'appareil distant, en même temps que l'application de destination. Pour de plus amples informations, veuillez consulter [Proxy local](local-proxy.md).

Le proxy local doit se connecter directement à Internet pour utiliser le AWS IoT tunneling sécurisé. Pour une connexion TCP de longue durée avec tunneling sécurisé, le proxy local met à niveau la requête HTTPS pour établir une WebSockets connexion à l'un des points de terminaison de connexion du dispositif de [tunneling sécurisé](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html).

Si vos appareils se trouvent dans un réseau qui utilise un proxy Web, celui-ci peut intercepter les connexions avant de les rediriger vers Internet. Pour établir une connexion de longue durée avec les points de terminaison de connexion du dispositif de tunneling sécurisé, configurez votre proxy local pour qu'il utilise le proxy Web comme décrit dans la [spécification du websocket](https://tools.ietf.org/html/rfc6455#section-4.1).

**Note**  
Le [AWS IoT Client de l'appareil](iot-sdks.md#iot-sdk-device-client) ne prend pas en charge les appareils qui utilisent un proxy web. Pour utiliser le proxy Web, vous devez utiliser un proxy local et le configurer pour qu'il fonctionne avec un proxy Web, comme décrit ci-dessous.

Les étapes suivantes montrent comment le proxy local fonctionne avec un proxy Web.

1. Le proxy local envoie une `CONNECT` requête HTTP au proxy Web qui contient l'adresse distante du service de tunneling sécurisé, ainsi que les informations d'authentification du proxy Web.

1. Le proxy Web créera ensuite une connexion de longue durée avec les points de terminaison de tunneling sécurisés distants.

1. La connexion TCP est établie et le proxy local fonctionne désormais en mode source et en mode destination pour la transmission de données.

**Topics**
+ [Créez le proxy local](#build-local-proxy)
+ [Configuration de votre proxy Web](#configure-web-proxy)
+ [Configuration et démarrage du proxy local](#configure-start-local-proxy)

## Créez le proxy local
<a name="build-local-proxy"></a>

Ouvrez le [code source du proxy local](https://github.com/aws-samples/aws-iot-securetunneling-localproxy) dans le GitHub référentiel et suivez les instructions de création et d'installation du proxy local.

## Configuration de votre proxy Web
<a name="configure-web-proxy"></a>

Le proxy local repose sur le mécanisme de tunneling HTTP décrit par la [spécification HTTP/1.1](https://tools.ietf.org/html/rfc7231#section-4.3.6). Pour être conforme aux spécifications, votre proxy Web doit autoriser les appareils à utiliser la `CONNECT` méthode.

La façon dont vous configurez votre proxy Web dépend du proxy Web que vous utilisez et de la version du proxy Web. Pour vous assurer que vous configurez correctement le proxy Web, consultez la documentation de votre proxy Web.

Pour configurer votre proxy Web, identifiez d'abord l'URL de votre proxy Web et vérifiez si celui-ci prend en charge le tunneling HTTP. L'URL du proxy Web sera utilisée ultérieurement lorsque vous configurerez et démarrerez le proxy local.

1. 

**Identifiez l'URL de votre proxy Web**  
Le format de votre URL de proxy web sera au format suivant.

   ```
   protocol://web_proxy_host_domain:web_proxy_port
   ```

   AWS IoT le tunneling sécurisé ne prend en charge que l'authentification de base pour le proxy Web. Pour utiliser l'authentification de base, vous devez spécifier le **username** et dans le **password** cadre de l'URL du proxy Web. L'URL du proxy web aura le format suivant.

   ```
   protocol://username:password@web_proxy_host_domain:web_proxy_port
   ```
   + *protocol*peut être `http` ou`https`. Nous vous recommandons d'utiliser `https`.
   + *web\$1proxy\$1host\$1domain*est l'adresse IP de votre proxy Web ou un nom DNS correspondant à l'adresse IP de votre proxy Web.
   + *web\$1proxy\$1port*est le port sur lequel le proxy Web écoute.
   + Le proxy Web l'utilise **username** et **password** pour authentifier la demande. 

1. 

**Testez l'URL de votre proxy web**  
Pour vérifier si votre proxy Web prend en charge le tunneling TCP, utilisez une `curl` commande et assurez-vous d'obtenir une réponse réponse `2xx` ou une `3xx`. 

   Par exemple, si l'URL de votre proxy Web est`https://server.com:1235`, utilisez un `proxy-insecure` indicateur avec la `curl` commande, car le proxy Web peut s'appuyer sur un certificat auto-signé.

   ```
   export HTTPS_PROXY=https://server.com:1235
   curl -I https://aws.amazon.com --proxy-insecure
   ```

   Si l'URL de votre proxy Web possède un `http` port (par exemple,`http://server.com:1234`), vous n'êtes pas obligé d'utiliser l'`proxy-insecure`indicateur.

   ```
   export HTTPS_PROXY=http://server.com:1234
   curl -I https://aws.amazon.com
   ```

## Configuration et démarrage du proxy local
<a name="configure-start-local-proxy"></a>

Pour configurer le proxy local afin qu'il utilise un proxy web, vous devez configurer la variable `HTTPS_PROXY` d'environnement avec les noms de domaine DNS ou les adresses IP et les numéros de port utilisés par votre proxy web.

Après avoir configuré le proxy local, vous pouvez utiliser le proxy local comme expliqué dans ce document [README](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#readme).

**Note**  
La casse est sensible à la casse dans votre déclaration de variable d'environnement. Nous vous recommandons de définir chaque variable une seule fois en majuscules ou en minuscules. Les exemples suivants montrent que la variable d'environnement est déclarée en lettres majuscules. Si la même variable est spécifiée à la fois en majuscules et en minuscules, la variable spécifiée en minuscules est prioritaire. 

Les commandes suivantes indiquent comment configurer le proxy local qui s'exécute sur votre destination pour utiliser le proxy Web et démarrer le proxy local.
+ `AWSIOT_TUNNEL_ACCESS_TOKEN` : Cette variable contient le jeton d'accès client (CAT) pour la destination.
+ `HTTPS_PROXY` : Cette variable contient l'URL du proxy Web ou l'adresse IP permettant de configurer le proxy local.

Les commandes présentées dans les exemples suivants dépendent du système d'exploitation que vous utilisez et du fait que le proxy Web écoute sur un port HTTP ou HTTPS.

### Proxy Web écoutant sur un port HTTP
<a name="configure-start-local-proxy-http"></a>

Si votre proxy Web écoute sur un port HTTP, vous pouvez fournir l'URL ou l'adresse IP du proxy Web pour la `HTTPS_PROXY` variable.

------
#### [ Linux/macOS ]

Sous Linux ou macOS, exécutez les commandes suivantes dans le terminal pour configurer et démarrer le proxy local sur votre destination afin d'utiliser un proxy Web écoutant un port HTTP.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
export HTTPS_PROXY=http:proxy.example.com:1234
./localproxy -r us-east-1 -d 22
```

Si vous devez vous authentifier auprès du proxy, vous devez spécifier un **username** et dans le **password** cadre de la `HTTPS_PROXY` variable.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
export HTTPS_PROXY=http://username:password@proxy.example.com:1234
./localproxy -r us-east-1 -d 22
```

------
#### [ Windows ]

Sous Windows, vous configurez le proxy local de la même manière que pour Linux ou macOS, mais la façon dont vous définissez les variables d'environnement est différente de celle des autres plateformes. Exécutez les commandes suivantes dans la `cmd` fenêtre pour configurer et démarrer le proxy local sur votre destination afin d'utiliser un proxy Web écoutant un port HTTP.

```
set AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
set HTTPS_PROXY=http://proxy.example.com:1234
.\localproxy -r us-east-1 -d 22
```

Si vous devez vous authentifier auprès du proxy, vous devez spécifier un **username** et **password** dans le cadre de la `HTTPS_PROXY` variable.

```
set AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
set HTTPS_PROXY=http://username:password@10.15.20.25:1234
.\localproxy -r us-east-1 -d 22
```

------

### Proxy Web écoutant sur un port HTTPS
<a name="configure-start-local-proxy-https"></a>

Exécutez les commandes suivantes si votre proxy Web écoute sur un port HTTPS. 

**Note**  
Si vous utilisez un certificat auto-signé pour le proxy Web ou si vous exécutez le proxy local sur un système d'exploitation qui ne prend pas en charge OpenSSL en mode natif et ne dispose pas de configurations par défaut, vous devrez configurer vos certificats de proxy Web comme décrit dans [la section Configuration des certificats du référentiel](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#certificate-setup). GitHub 

Les commandes suivantes ressembleront à la façon dont vous avez configuré votre proxy Web pour un proxy HTTP, à l'exception du fait que vous spécifierez également le chemin d'accès aux fichiers de certificats que vous avez installés, comme décrit précédemment.

------
#### [ Linux/macOS ]

Sous Linux ou macOS, exécutez les commandes suivantes dans le terminal pour configurer le proxy local exécuté sur votre destination afin qu'il utilise un proxy Web écoutant un port HTTPS.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
export HTTPS_PROXY=http:proxy.example.com:1234
./localproxy -r us-east-1 -d 22 -c /path/to/certs
```

Si vous devez vous authentifier auprès du proxy, vous devez spécifier un **username** et **password** dans le cadre de la `HTTPS_PROXY` variable.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
export HTTPS_PROXY=http://username:password@proxy.example.com:1234
./localproxy -r us-east-1 -d 22 -c /path/to/certs
```

------
#### [ Windows ]

Sous Windows, exécutez les commandes suivantes dans la `cmd` fenêtre pour configurer et démarrer le proxy local exécuté sur votre destination afin d'utiliser un proxy Web écoutant un port HTTP.

```
set AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
set HTTPS_PROXY=http://proxy.example.com:1234
.\localproxy -r us-east-1 -d 22 -c \path\to\certs
```

Si vous devez vous authentifier auprès du proxy, vous devez spécifier un **username** et **password** dans le cadre de la `HTTPS_PROXY` variable.

```
set AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
set HTTPS_PROXY=http://username:password@10.15.20.25:1234
.\localproxy -r us-east-1 -d 22 -c \path\to\certs
```

------

### Exemple de commande et de sortie
<a name="example-cmd-output-localproxy-webproxy"></a>

Voici un exemple de commande que vous exécutez sur un système d'exploitation Linux et le résultat correspondant. L'exemple montre un proxy Web qui écoute sur un port HTTP et montre comment le proxy local peut être configuré pour utiliser le proxy Web dans modes `source` et `destination`. Avant de pouvoir exécuter ces commandes, vous devez avoir déjà ouvert un tunnel et obtenu les jetons d'accès client pour la source et la destination. Vous devez également avoir créé le proxy local et configuré votre proxy Web comme décrit précédemment.

Voici une vue d'ensemble des étapes à suivre après le démarrage du proxy local. Le proxy local :
+ Identifie l'URL du proxy Web afin qu'il puisse l'utiliser pour se connecter au serveur proxy.
+ Établit une connexion TCP avec le proxy Web.
+ Envoie une `CONNECT` requête HTTP au proxy Web et attend la `HTTP/1.1 200` réponse, qui indique que la connexion a été établie.
+ Met à niveau le protocole HTTPS WebSockets pour établir une connexion de longue durée.
+ Commence à transmettre des données via la connexion aux points de terminaison du dispositif de tunneling sécurisé. 

**Note**  
Les commandes suivantes utilisées dans les exemples utilisent l'`verbosity`indicateur pour illustrer une vue d'ensemble des différentes étapes décrites précédemment après l'exécution du proxy local. Nous vous recommandons d'utiliser cet indicateur uniquement à des fins de test.

**Exécution d'un proxy local en mode source**  
Les commandes suivantes montrent comment exécuter le proxy local en mode source.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
export HTTPS_PROXY=http:username:password@10.15.10.25:1234
./localproxy -s 5555 -v 5 -r us-west-2
```

Ce qui suit montre un exemple de sortie de l'exécution du proxy local en `source` mode.

```
...

Parsed basic auth credentials for the URL
Found Web proxy information in the environment variables, will use it to connect via the proxy.

...

Starting proxy in source mode
Attempting to establish web socket connection with endpoint wss://data.tunneling.iot.us-west-2.amazonaws.com:443
Resolved Web proxy IP: 10.10.0.11
Connected successfully with Web Proxy
Successfully sent HTTP CONNECT to the Web proxy
Full response from the Web proxy:
HTTP/1.1 200 Connection established
TCP tunnel established successfully
Connected successfully with proxy server
Successfully completed SSL handshake with proxy server
Web socket session ID: 0a109afffee745f5-00001341-000b8138-cc6c878d80e8adb0-f186064b
Web socket subprotocol selected: aws.iot.securetunneling-2.0
Successfully established websocket connection with proxy server: wss://data.tunneling.iot.us-west-2.amazonaws.com:443
Seting up web socket pings for every 5000 milliseconds
Scheduled next read:

...

Starting web socket read loop continue reading...
Resolved bind IP: 127.0.0.1
Listening for new connection on port 5555
```

**Exécution d'un proxy local en mode destination**  
Les commandes suivantes montrent comment exécuter le proxy local en mode destination.

```
export AWSIOT_TUNNEL_ACCESS_TOKEN=${access_token}
export HTTPS_PROXY=http:username:password@10.15.10.25:1234
./localproxy -d 22 -v 5 -r us-west-2
```

Ce qui suit montre un exemple de sortie de l'exécution du proxy local en `destination` mode.

```
...

Parsed basic auth credentials for the URL
Found Web proxy information in the environment variables, will use it to connect via the proxy.

...

Starting proxy in destination mode
Attempting to establish web socket connection with endpoint wss://data.tunneling.iot.us-west-2.amazonaws.com:443
Resolved Web proxy IP: 10.10.0.1
Connected successfully with Web Proxy
Successfully sent HTTP CONNECT to the Web proxy
Full response from the Web proxy:
HTTP/1.1 200 Connection established
TCP tunnel established successfully
Connected successfully with proxy server
Successfully completed SSL handshake with proxy server
Web socket session ID: 06717bfffed3fd05-00001355-000b8315-da3109a85da804dd-24c3d10d
Web socket subprotocol selected: aws.iot.securetunneling-2.0
Successfully established websocket connection with proxy server: wss://data.tunneling.iot.us-west-2.amazonaws.com:443
Seting up web socket pings for every 5000 milliseconds
Scheduled next read:

...

Starting web socket read loop continue reading...
```