Configuration du proxy local pour les appareils utilisant un proxy Web - AWS IoT Core

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.

Configuration du proxy local pour les appareils utilisant un proxy Web

Vous pouvez utiliser un proxy local sur les AWS IoT appareils pour communiquer avec des API de tunneling AWS IoT sécurisées. 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 plus d’informations, consultez Proxy local.

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é.

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.

Note

Le AWS IoT Client de l'appareil 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.

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

  3. 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.

Créez le proxy local

Ouvrez le code source du proxy local dans le GitHub référentiel et suivez les instructions de création et d'installation du proxy local.

Configuration de votre proxy Web

Le proxy local repose sur le mécanisme de tunneling HTTP décrit par la spécification HTTP/1.1. 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
    • le protocole peut être http ouhttps. Nous vous recommandons d'utiliser https.

    • web_proxy_host_domain est l'adresse IP de votre proxy Web ou un nom DNS qui correspond à l'adresse IP de votre proxy Web.

    • web_proxy_port est le port sur lequel le proxy Web écoute.

    • Le proxy Web l'utilise username et password pour authentifier la demande.

  2. 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 esthttps://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-insecureindicateur.

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

Configuration et démarrage du proxy local

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.

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

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

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. 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

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'verbosityindicateur 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...