

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configurar o proxy local para dispositivos que usam proxy da web
<a name="configure-local-proxy-web-proxy"></a>

Você pode usar o proxy local em AWS IoT dispositivos para se comunicar com o AWS IoT tunelamento APIs seguro. O proxy local transmite dados enviados pelo aplicativo do dispositivo usando tunelamento seguro por meio de uma conexão segura. WebSocket O proxy local pode funcionar no modo `source` ou `destination`. No modo `source`, ele é executado no mesmo dispositivo ou rede que inicia a conexão TCP. No modo `destination`, o proxy local é executado no dispositivo remoto com o aplicativo de destino. Para obter mais informações, consulte [Proxy local](local-proxy.md).

O proxy local precisa se conectar diretamente à Internet para usar o AWS IoT tunelamento seguro. Para uma conexão TCP de longa duração com tunelamento seguro, o proxy local atualiza a solicitação HTTPS para estabelecer uma WebSockets conexão com um dos terminais de conexão do dispositivo de tunelamento [seguro](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html).

Se seus dispositivos estiverem em uma rede que usa um proxy da Web, o proxy da Web poderá interceptar as conexões antes de encaminhá-las para a Internet. Para estabelecer uma conexão de longa duração com os endpoints de conexão do dispositivo de encapsulamento seguro, configure seu proxy local para usar o proxy da Web conforme descrito na [especificação do websocket](https://tools.ietf.org/html/rfc6455#section-4.1).

**nota**  
O [AWS IoT Device Client](iot-sdks.md#iot-sdk-device-client) não é compatível com dispositivos que usam um proxy da web. Para trabalhar com o proxy da web, você precisará usar um proxy local e configurá-lo para funcionar com um proxy da web, conforme descrito abaixo.

As etapas a seguir mostram como o proxy local funciona com um proxy da web.

1. O proxy local envia uma solicitação `CONNECT` HTTP ao proxy da web que contém o endereço remoto do serviço de encapsulamento seguro, junto com as informações de autenticação do proxy da web.

1. O proxy da web então criará uma conexão de longa duração com os endpoints remotos de encapsulamento seguro.

1. A conexão TCP foi estabelecida e o proxy local agora funcionará nos modos de origem e destino para transmissão de dados.

**Topics**
+ [Crie o proxy local](#build-local-proxy)
+ [Configure seu proxy da web](#configure-web-proxy)
+ [Configurar e iniciar o proxy local](#configure-start-local-proxy)

## Crie o proxy local
<a name="build-local-proxy"></a>

Abra o [código-fonte do proxy local](https://github.com/aws-samples/aws-iot-securetunneling-localproxy) no GitHub repositório e siga as instruções para criar e instalar o proxy local.

## Configure seu proxy da web
<a name="configure-web-proxy"></a>

O proxy local depende do mecanismo de encapsulamento HTTP descrito pela [ especificação HTTP/1.1.](https://tools.ietf.org/html/rfc7231#section-4.3.6). Para estar em conformidade com as especificações, seu proxy da web deve permitir que os dispositivos usem o método `CONNECT`.

A forma como você configura seu proxy da web depende do proxy da web que você está usando e da versão do proxy da web. Para ter certeza de que você configurou o proxy da web corretamente, verifique a documentação do proxy da web.

Para configurar seu proxy da web, primeiro identifique sua URL de proxy da web e confirme se seu proxy da web é compatível com o encapsulamento HTTP. O URL do proxy da web será usado posteriormente quando você configurar e iniciar o proxy local.

1. 

**Identifique a URL de seu proxy da web**  
Sua URL de proxy da web estará no seguinte formato.

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

   AWS IoT o tunelamento seguro oferece suporte somente à autenticação básica para proxy da web. Para usar a autenticação básica, você deve especificar **username** e **password** como parte da URL do proxy da web. A URL de proxy da web estará no seguinte formato.

   ```
   protocol://username:password@web_proxy_host_domain:web_proxy_port
   ```
   + *protocol*pode ser `http` ou`https`. Recomendamos usar o `https`.
   + *web\$1proxy\$1host\$1domain*é o endereço IP do seu proxy da web ou um nome DNS que é resolvido para o endereço IP do seu proxy da web.
   + *web\$1proxy\$1port*é a porta na qual o proxy da web está escutando.
   + O proxy da web usa isso **username** e **password** para autenticar a solicitação.

1. 

**Teste o URL do proxy web**  
Para confirmar se seu proxy da web oferece suporte ao encapsulamento TCP, use um comando `curl` e certifique-se de obter uma resposta `2xx` ou uma `3xx`.

   Por exemplo, se o URL do proxy da web for `https://server.com:1235`, use um `proxy-insecure` sinalizador com o comando `curl` porque o proxy da web pode depender de um certificado autoassinado.

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

   Se o URL do seu proxy da web tiver uma porta `http` (por exemplo, `http://server.com:1234`), você não precisará usar o sinalizador `proxy-insecure`.

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

## Configurar e iniciar o proxy local
<a name="configure-start-local-proxy"></a>

Para configurar o proxy local para usar um proxy da web, você deve configurar a `HTTPS_PROXY` variável de ambiente com os nomes de domínio DNS ou os endereços IP e números de porta que seu proxy da web usa.

Depois de configurar o proxy local, você pode usar o proxy local conforme explicado neste documento [README](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#readme).

**nota**  
A declaração da variável de ambiente diferencia maiúsculas e minúsculas. Recomendamos definir cada variável uma vez usando todas as letras maiúsculas ou minúsculas. Os exemplos a seguir mostram o nome da variável de ambiente com todas as letras maiúsculas. Se a mesma variável for especificada usando letras maiúsculas e minúsculas, a variável especificada usando letras minúsculas terá precedência. 

Os comandos a seguir mostram como configurar o proxy local que está sendo executado no seu destino para usar o proxy da web e iniciar o proxy local.
+ `AWSIOT_TUNNEL_ACCESS_TOKEN`: essa variável contém o token de acesso do cliente (CAT) para o destino.
+ `HTTPS_PROXY`: essa variável contém o URL do proxy da web ou o endereço IP para configurar o proxy local.

Os comandos mostrados nos exemplos a seguir dependem do sistema operacional que você usa e se o proxy da web está escutando em uma porta HTTP ou HTTPS.

### Proxy da Web escutando em uma porta HTTP
<a name="configure-start-local-proxy-http"></a>

Se o proxy da Web estiver escutando em uma porta HTTP, você poderá fornecer a URL ou o endereço IP do proxy da Web para a variável `HTTPS_PROXY`.

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

No Linux ou macOS, execute os seguintes comandos no terminal para configurar e iniciar o proxy local em seu destino para usar um proxy da web escutando uma porta HTTP.

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

Se você precisar se autenticar com o proxy, deverá especificar um **username** e **password** como parte da variável `HTTPS_PROXY`.

```
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 ]

No Windows, você configura o proxy local da mesma forma que você faz para Linux ou macOS, mas a forma como você define as variáveis de ambiente é diferente das outras plataformas. Execute os comandos a seguir na janela `cmd` para configurar e iniciar o proxy local em seu destino para usar um proxy da web escutando uma porta HTTP.

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

Se você precisar se autenticar com o proxy, deverá especificar um **username** e **password** como parte da variável `HTTPS_PROXY`.

```
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 da web escutando em uma porta HTTPS
<a name="configure-start-local-proxy-https"></a>

Execute os comandos a seguir se o proxy da web estiver escutando em uma porta HTTPS. 

**nota**  
Se você estiver usando um certificado autoassinado para o proxy da web ou se estiver executando o proxy local em um sistema operacional que não tenha suporte nativo ao OpenSSL e configurações padrão, você precisará configurar seus certificados de proxy da web conforme descrito na seção Configuração [do certificado no repositório](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#certificate-setup). GitHub 

Os comandos a seguir serão semelhantes à forma como você configurou seu proxy da web para um proxy HTTP, com a exceção de que você também especificará o caminho para os arquivos de certificado que você instalou conforme descrito anteriormente.

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

No Linux ou macOS, execute os seguintes comandos no terminal para configurar e iniciar o proxy local em seu destino para usar um proxy da web escutando uma porta 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
```

Se você precisar se autenticar com o proxy, deverá especificar um **username** e **password** como parte da variável `HTTPS_PROXY`.

```
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 ]

No Windows, execute os seguintes comandos na janela `cmd` para configurar e iniciar o proxy local em execução no seu destino para usar um proxy da web escutando uma porta 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
```

Se você precisar se autenticar com o proxy, deverá especificar um **username** e **password** como parte da variável `HTTPS_PROXY`.

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

------

### Exemplo de comando e saída
<a name="example-cmd-output-localproxy-webproxy"></a>

Veja a seguir um exemplo de um comando executado em um sistema operacional Linux e a saída correspondente. O exemplo mostra um proxy da web que está escutando em uma porta HTTP e como o proxy local pode ser configurado para usar o proxy da web nos modos `source` e `destination`. Antes de poder executar esses comandos, você já deve ter aberto um túnel e obtido os tokens de acesso do cliente para a origem e o destino. Você também deve ter criado o proxy local e configurado seu proxy da web conforme descrito anteriormente.

Veja a seguir uma visão geral das etapas após você iniciar o proxy local. O proxy local:
+ Identifica o URL do proxy da web para que ele possa usar o URL para se conectar ao servidor proxy.
+ Estabelece uma conexão TCP com o proxy da web.
+ Envia uma solicitação `CONNECT` HTTP para o proxy da web e aguarda a `HTTP/1.1 200` resposta, o que indica que a conexão foi estabelecida.
+ Atualiza o protocolo HTTPS WebSockets para estabelecer uma conexão de longa duração.
+ Inicia a transmissão de dados por meio da conexão com os endpoints do dispositivo de encapsulamento seguro. 

**nota**  
Os comandos a seguir usados nos exemplos usam o sinalizador `verbosity` para ilustrar uma visão geral das diferentes etapas descritas anteriormente após a execução do proxy local. Recomendamos que você use esse sinalizador apenas para fins de teste.

**Rodar o proxy local no modo de origem**  
Os comandos a seguir mostram como executar o proxy local no modo de origem.

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

Veja a seguir um exemplo de saída da execução do proxy local no modo `source`.

```
...

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

**Como executar o proxy local no modo de destino**  
Os comandos a seguir mostram como executar o proxy local no modo de destino.

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

Veja a seguir um exemplo de saída da execução do proxy local no modo `destination`.

```
...

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