

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

Il proxy locale trasmette i dati inviati dall'applicazione in esecuzione sul dispositivo di origine utilizzando il tunneling sicuro su una WebSocket connessione sicura. È possibile scaricare il sorgente proxy locale da. [GitHub](https://github.com/aws-samples/aws-iot-securetunneling-localproxy) 

Il proxy locale può essere eseguito in due modalità: `source` o `destination`. In modalità di origine, il proxy locale viene eseguito sullo stesso dispositivo o rete dell'applicazione client che avvia la connessione TCP. In modalità di destinazione, il proxy locale viene eseguito sul dispositivo remoto, insieme all'applicazione di destinazione. Un singolo tunnel può supportare fino a tre flussi di dati alla volta utilizzando il multiplexing del tunnel. Per ogni flusso di dati, il tunneling sicuro utilizza più connessioni TCP, il che riduce il rischio di timeout. Per ulteriori informazioni, consulta [Flussi di dati multiplex e utilizzo di connessioni TCP simultanee in un tunnel sicuro](multiplexing.md).

# Come utilizzare il proxy locale
<a name="how-use-local-proxy"></a>

Puoi eseguire il proxy locale sui dispositivi di origine e di destinazione per trasmettere i dati agli endpoint di tunneling sicuro. Se i tuoi dispositivi si trovano in una rete che utilizza un proxy web, il proxy web può intercettare le connessioni prima di inoltrarle a Internet. In questo caso, dovrai configurare il proxy locale per utilizzare il proxy Web. Per ulteriori informazioni, consulta [Configurare il proxy locale per i dispositivi che utilizzano il proxy web](configure-local-proxy-web-proxy.md). 

## Flusso di lavoro del proxy locale
<a name="local-proxy-workflow"></a>

I passaggi seguenti mostrano come avviene l'esecuzione del proxy locale sui dispositivi di origine e destinazione.

1. 

**Connessione del proxy locale al tunneling sicuro**  
Il proxy locale stabilisce innanzitutto una connessione al tunneling sicuro. Quando avvii il proxy locale, utilizza i seguenti argomenti:
   + L'`-r`argomento per specificare il modo Regione AWS in cui viene aperto il tunnel.
   + L'argomento `-t` per passare il token di accesso client di origine o di destinazione restituito da `OpenTunnel`.
**Nota**  
Non è possibile connettere contemporaneamente due proxy locali che utilizzano lo stesso valore del token di accesso client.

1. 

**Esecuzione di operazioni di origine o destinazione**  
Una volta stabilita la WebSocket connessione, il proxy locale esegue azioni in modalità di origine o in modalità destinazione, a seconda della configurazione.

   Per impostazione predefinita, il proxy locale tenta di riconnettersi al tunneling sicuro in caso di errori input/output (I/O) o se la WebSocket connessione viene chiusa in modo imprevisto. Ciò causa la chiusura della connessione TCP. Se si verificano errori di socket TCP, il proxy locale invia un messaggio attraverso il tunnel per notificare all'altro lato di chiudere la connessione TCP. Per impostazione predefinita, il proxy locale utilizza sempre la comunicazione SSL.

1. 

**Arresto del proxy locale**  
Dopo aver utilizzato il tunnel, è possibile terminare il processo proxy locale in modo sicuro. Si consiglia di chiudere esplicitamente il tunnel chiamando `CloseTunnel`. I client di tunnel attivi potrebbero non essere chiusi subito dopo la chiamata. `CloseTunnel`

Per ulteriori informazioni su come utilizzare per Console di gestione AWS aprire un tunnel e avviare una sessione SSH, vedere[Apertura di un tunnel e avvio di una sessione SSH su un dispositivo remoto](secure-tunneling-tutorial-open-tunnel.md).

## Best practice per i proxy locali
<a name="local-proxy-security"></a>

Quando esegui un proxy locale, attieniti alle best practice seguenti:
+ Evitare l'uso dell'argomento proxy `-t` locale per passare un token di accesso. Si consiglia di utilizzare la variabile di ambiente `AWSIOT_TUNNEL_ACCESS_TOKEN` per impostare il token di accesso per il proxy locale.
+ Eseguire l'eseguibile del proxy locale con privilegi minimi nel sistema operativo o nell'ambiente.
  + Evitare di eseguire il proxy locale come amministratore in Windows.
  + Evitare di eseguire il proxy locale come root su Linux e macOS.
+ Si consiglia di eseguire il proxy locale su host separati, container, sandbox, chroot jail o un ambiente virtualizzato.
+ Creare il proxy locale con i flag di sicurezza pertinenti, a seconda della toolchain.
+ Nei dispositivi con più interfacce di rete, utilizzare l'argomento `-b` per associare il socket TCP all'interfaccia di rete utilizzata per comunicare con l'applicazione di destinazione. 

## Esempio di comando e output
<a name="example-cmd-output-localproxy"></a>

Di seguito viene illustrato un esempio di comando eseguito su sistema operativo Linux e l'output corrispondente. L'esempio mostra come il proxy locale può essere configurato in entrambe le modalità `source` e `destination`. Il proxy locale aggiorna il protocollo HTTPS per stabilire una connessione di lunga durata, quindi inizia WebSockets a trasmettere i dati attraverso la connessione agli endpoint sicuri del dispositivo di tunneling.

**Prima di eseguire questi comandi:**  
Prima di poter eseguire questi comandi, è necessario aver già aperto un tunnel e aver ottenuto i token di accesso del client per l'origine e la destinazione. Inoltre, devi avere creato il proxy locale come descritto in precedenza. Per creare il proxy locale, apri il [codice sorgente del proxy locale](https://github.com/aws-samples/aws-iot-securetunneling-localproxy) nel GitHub repository e segui le istruzioni per la creazione e l'installazione del proxy locale.

**Nota**  
I seguenti comandi utilizzati negli esempi utilizzano il flag `verbosity` per illustrare una panoramica dei diversi passaggi descritti in precedenza dopo l'esecuzione del proxy locale. È consigliabile utilizzare questo flag solo per effettuare dei test.

**Esecuzione di proxy locale in modalità di origine**  
I seguenti comandi mostrano come eseguire il proxy locale in modalità sorgente.

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

Su Linux o macOS, esegui i seguenti comandi nel terminale per configurare e avviare il proxy locale sull'origine.

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

Dove:
+ `-s` è la porta di ascolto dell'origine che avvia il proxy locale nella modalità di origine.
+ `-v` è la verbosità dell'output che può essere un valore compreso tra zero e sei.
+ `-r` è la regione dell'endpoint in cui è aperto il tunnel.

Per ulteriori informazioni sui parametri, consulta la sezione [Opzioni impostate utilizzando gli argomenti della riga di comando](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments).

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

Su Windows, si configura il proxy locale in modo simile a quello che si esegue per Linux o macOS, ma il modo in cui si definiscono le variabili di ambiente è diverso dalle altre piattaforme. Esegui i seguenti comandi nella finestra `cmd` per configurare e avviare il proxy locale sull'origine.

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

Dove:
+ `-s` è la porta di ascolto dell'origine che avvia il proxy locale nella modalità di origine.
+ `-v` è la verbosità dell'output che può essere un valore compreso tra zero e sei.
+ `-r` è la regione dell'endpoint in cui è aperto il tunnel.

Per ulteriori informazioni sui parametri, consulta la sezione [Opzioni impostate utilizzando gli argomenti della riga di comando](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments).

------

**Nota**  
Quando si utilizza la versione più recente del proxy locale in modalità sorgente, è necessario includere il AWS CLI parametro `--destination-client-type V1` sul dispositivo di origine per garantire la compatibilità con le versioni precedenti. Questo vale quando ci si connette a una di queste modalità di destinazione:  
AWS IoT Client del dispositivo
AWS IoT Componente di tunneling sicuro o componente di tunneling AWS IoT Greengrass Version 2 sicuro
Qualsiasi codice dimostrativo di AWS IoT Secure Tunneling scritto prima del 2022
Versioni 1.X del proxy locale
Questo parametro garantisce una comunicazione corretta tra il proxy di origine aggiornato e i client di destinazione precedenti. Per ulteriori informazioni sulle versioni proxy locali, vedere [AWS IoT Secure Tunneling on](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*

Di seguito è riportato un esempio di output dell'esecuzione del proxy locale in `source` modalità.

```
...
...

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

**Esecuzione del proxy locale nella modalità di destinazione**  
I comandi seguenti mostrano come eseguire il proxy locale in modalità destinazione.

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

Su Linux o macOS, esegui i seguenti comandi nel terminale per configurare e avviare il proxy locale sulla destinazione.

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

Dove:
+ `-d` è l'applicazione di destinazione che avvia il proxy locale nella modalità di destinazione.
+ `-v` è la verbosità dell'output che può essere un valore compreso tra zero e sei.
+ `-r` è la regione dell'endpoint in cui è aperto il tunnel.

Per ulteriori informazioni sui parametri, consulta la sezione [Opzioni impostate utilizzando gli argomenti della riga di comando](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments).

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

Su Windows, si configura il proxy locale in modo simile a quello che si esegue per Linux o macOS, ma il modo in cui si definiscono le variabili di ambiente è diverso dalle altre piattaforme. Esegui i seguenti comandi nella finestra `cmd` per configurare e avviare il proxy locale sulla destinazione.

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

Dove:
+ `-d` è l'applicazione di destinazione che avvia il proxy locale nella modalità di destinazione.
+ `-v` è la verbosità dell'output che può essere un valore compreso tra zero e sei.
+ `-r` è la regione dell'endpoint in cui è aperto il tunnel.

Per ulteriori informazioni sui parametri, consulta la sezione [Opzioni impostate utilizzando gli argomenti della riga di comando](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#options-set-via-command-line-arguments).

------

**Nota**  
Quando si utilizza la versione più recente del proxy locale in modalità di destinazione, è necessario includere il AWS CLI parametro `--destination-client-type V1` sul dispositivo di destinazione per garantire la compatibilità con le versioni precedenti. Questo vale quando ci si connette a una di queste modalità di origine:  
Tunneling sicuro basato su browser dalla console. AWS 
Versioni 1.X del proxy locale
Questo parametro garantisce una comunicazione corretta tra il proxy di destinazione aggiornato e i client di origine precedenti. Per ulteriori informazioni sulle versioni proxy locali, vedere [AWS IoT Secure Tunneling on](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*

Di seguito è riportato un esempio di output dell'esecuzione del proxy locale in `destination` modalità.

```
...
...

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

# Configurare il proxy locale per i dispositivi che utilizzano il proxy web
<a name="configure-local-proxy-web-proxy"></a>

È possibile utilizzare il proxy locale sui AWS IoT dispositivi per comunicare tramite AWS IoT APIs tunneling sicuro. Il proxy locale trasmette i dati inviati dall'applicazione del dispositivo utilizzando un tunneling sicuro su una connessione sicura. WebSocket Il proxy locale può funzionare in modalità `source` o `destination`. Nella modalità `source`, viene eseguito sullo stesso dispositivo o rete che avvia la connessione TCP. Nella modalità `destination`, il proxy locale viene eseguito sul dispositivo remoto, insieme all'applicazione di destinazione. Per ulteriori informazioni, consulta [Proxy locale](local-proxy.md).

Il proxy locale deve connettersi direttamente a Internet per utilizzare AWS IoT il tunneling sicuro. [Per una connessione TCP di lunga durata con tunneling sicuro, il proxy locale aggiorna la richiesta HTTPS per stabilire una WebSockets connessione a uno degli endpoint di connessione del dispositivo di tunneling sicuro.](https://docs.aws.amazon.com/general/latest/gr/iot_device_management.html)

Se i tuoi dispositivi si trovano in una rete che utilizza un proxy Web, il proxy Web può intercettare le connessioni prima di inoltrarle a Internet. Per stabilire una connessione di lunga durata agli endpoint di connessione del dispositivo di tunneling protetto, configura il proxy locale per l'utilizzo del proxy web come descritto nella sezione [specifica websocket](https://tools.ietf.org/html/rfc6455#section-4.1).

**Nota**  
[AWS IoT Client del dispositivo](iot-sdks.md#iot-sdk-device-client) non supporta dispositivi che utilizzano un proxy web. Per lavorare con il proxy web, è necessario utilizzare un proxy locale e configurarlo per il funzionamento con un proxy web come descritto di seguito.

I passaggi seguenti mostrano come il proxy locale funziona con un proxy web.

1. Il proxy locale invia una richiesta HTTP `CONNECT` al proxy web che contiene l'indirizzo remoto del servizio di tunneling protetto, insieme alle informazioni di autenticazione del proxy Web.

1. Il proxy web creerà quindi una connessione di lunga durata agli endpoint di tunneling protetti remoti.

1. La connessione TCP viene stabilita e il proxy locale ora funzionerà sia in modalità di origine che di destinazione per la trasmissione dei dati.

**Topics**
+ [Crea il proxy locale](#build-local-proxy)
+ [Configurazione del proxy Web](#configure-web-proxy)
+ [Configura e avvia il proxy locale](#configure-start-local-proxy)

## Crea il proxy locale
<a name="build-local-proxy"></a>

Apri il [codice sorgente del proxy locale](https://github.com/aws-samples/aws-iot-securetunneling-localproxy) nel GitHub repository e segui le istruzioni per creare e installare il proxy locale.

## Configurazione del proxy Web
<a name="configure-web-proxy"></a>

Il proxy locale si basa sul meccanismo di tunneling HTTP descritto dalle [Specifiche HTTP/1.1](https://tools.ietf.org/html/rfc7231#section-4.3.6). Per rispettare le specifiche, il proxy web deve consentire ai dispositivi di utilizzare il metodo `CONNECT`.

La modalità di configurazione del proxy web dipende dal proxy web utilizzato e dalla versione del proxy web. Per assicurarsi di configurare correttamente il proxy web, controlla la documentazione del proxy web.

Per configurare il proxy web, identifica innanzitutto l'URL del proxy web e verifica se il proxy web supporta il tunneling HTTP. L'URL del proxy web verrà utilizzato in un secondo momento quando si configura e si avvia il proxy locale.

1. 

**Identifica l'URL del proxy web**  
L'URL del proxy web sarà nel formato seguente.

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

   AWS IoT il tunneling sicuro supporta solo l'autenticazione di base per il proxy web. Per utilizzare l'autenticazione di base, è necessario specificare **username** e **password** come parte dell'URL del proxy web. L'URL del proxy web sarà nel formato seguente.

   ```
   protocol://username:password@web_proxy_host_domain:web_proxy_port
   ```
   + *protocol*può essere o. `http` `https` Ti consigliamo di utilizzare `https`.
   + *web\$1proxy\$1host\$1domain*è l'indirizzo IP del proxy Web o un nome DNS che si risolve nell'indirizzo IP del proxy Web.
   + *web\$1proxy\$1port*è la porta su cui il proxy web è in ascolto.
   + Il proxy web utilizza questo **username** e **password** per autenticare la richiesta.

1. 

**Verificare l'URL del proxy web**  
Per confermare se il proxy web supporta il tunneling TCP, utilizza un comando `curl` e assicurati di ottenere una risposta `2xx` o `3xx`.

   Ad esempio, se l'URL del proxy web è `https://server.com:1235`, utilizza un flag `proxy-insecure` con il comando `curl` perché il proxy web potrebbe basarsi su un certificato autofirmato.

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

   Se l'URL del proxy web ha una porta `http` (ad esempio, `http://server.com:1234`), non è necessario utilizzare il flag `proxy-insecure`.

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

## Configura e avvia il proxy locale
<a name="configure-start-local-proxy"></a>

Per configurare il proxy locale affinché utilizzi un proxy web, puoi configurare le variabili di ambiente `HTTPS_PROXY` con i nomi di dominio DNS o gli indirizzi IP e i numeri della porta utilizzati dai server proxy.

Dopo aver configurato il proxy locale, è possibile utilizzare il proxy locale come spiegato in questo documento [README](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#readme).

**Nota**  
La dichiarazione di ambiente variabile prevede la distinzione tra lettere maiuscole e minuscole. È consigliabile definire ogni variabile una volta utilizzando tutte le lettere maiuscole o minuscole. Gli esempi seguenti mostrano il nome della variabile di ambiente in lettere maiuscole. Se la stessa variabile viene specificata utilizzando lettere maiuscole e minuscole, la variabile specificata con lettere minuscole ha la precedenza. 

I comandi seguenti mostrano come configurare il proxy locale in esecuzione sulla destinazione per utilizzare il proxy web e avviare il proxy locale.
+ `AWSIOT_TUNNEL_ACCESS_TOKEN`: questa variabile contiene il token di accesso del client (CAT) per la destinazione.
+ `HTTPS_PROXY`: questa variabile contiene l'URL del proxy web o l'indirizzo IP per la configurazione del proxy locale.

I comandi illustrati negli esempi seguenti dipendono dal sistema operativo utilizzato e dal fatto che il proxy web sia in ascolto su una porta HTTP o HTTPS.

### Proxy web in ascolto su una porta HTTP
<a name="configure-start-local-proxy-http"></a>

Se il proxy web è in ascolto su una porta HTTP, è possibile fornire l'URL del proxy web o l'indirizzo IP per la variabile `HTTPS_PROXY`.

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

Su Linux o macOS, eseguire i seguenti comandi nel terminale per configurare e avviare il proxy locale sulla destinazione per utilizzare un proxy web in ascolto di una 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 è necessario autenticarsi con il proxy, è necessario specificare **username** e **password** come parte della variabile `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 ]

Su Windows, si configura il proxy locale in modo simile a quello che si esegue per Linux o macOS, ma il modo in cui si definiscono le variabili di ambiente è diverso dalle altre piattaforme. Esegui i comandi seguenti nella finestra `cmd` per configurare e avviare il proxy locale sulla destinazione per utilizzare un proxy web in ascolto di una 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 è necessario autenticarsi con il proxy, è necessario specificare **username** e **password** come parte della variabile `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 web in ascolto su una porta HTTPS
<a name="configure-start-local-proxy-https"></a>

Esegui i seguenti comandi se il proxy web è in ascolto su una porta HTTPS. 

**Nota**  
Se utilizzi un certificato autofirmato per il proxy web o se esegui il proxy locale su un sistema operativo che non dispone del supporto OpenSSL nativo e delle configurazioni predefinite, dovrai configurare i certificati proxy web come descritto nella sezione Configurazione dei [certificati del repository](https://github.com/aws-samples/aws-iot-securetunneling-localproxy#certificate-setup). GitHub 

I comandi seguenti avranno un aspetto simile alla configurazione del proxy web per un proxy HTTP, con l'eccezione che verrà specificato anche il percorso dei file di certificato installati come descritto in precedenza.

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

In Linux o macOS, esegui i seguenti comandi nel terminale per configurare il proxy locale in esecuzione sulla destinazione per utilizzare un proxy web in ascolto di una 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 è necessario autenticarsi con il proxy, è necessario specificare **username** e **password** come parte della variabile `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 ]

Su Windows, esegui i comandi seguenti nella finestra `cmd` per configurare e avviare il proxy locale in esecuzione sulla destinazione per utilizzare un proxy web in ascolto di una 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 è necessario autenticarsi con il proxy, è necessario specificare **username** e **password** come parte della variabile `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
```

------

### Esempio di comando e output
<a name="example-cmd-output-localproxy-webproxy"></a>

Di seguito viene illustrato un esempio di comando eseguito su sistema operativo Linux e l'output corrispondente. L'esempio mostra un proxy Web che è in ascolto su una porta HTTP e come il proxy locale può essere configurato per l'utilizzo del proxy web sia nella modalità `source` che nella modalità `destination`. Prima di poter eseguire questi comandi, è necessario aver già aperto un tunnel e aver ottenuto i token di accesso del client per l'origine e la destinazione. È inoltre necessario aver creato il proxy locale e aver configurato il proxy web come descritto in precedenza.

Ecco una panoramica dei passaggi dopo aver avviato il proxy locale. Il proxy locale:
+ Identifica l'URL del proxy web in modo che possa utilizzare l'URL per connettersi al server proxy.
+ Stabilisce una connessione TCP con il proxy web.
+ Invia una richiesta HTTP `CONNECT` al proxy web e attende la risposta `HTTP/1.1 200`, che indica che la connessione è stata stabilita.
+ Aggiorna il protocollo HTTPS per stabilire una connessione di lunga durata WebSockets .
+ Avvia la trasmissione dei dati tramite la connessione agli endpoint del dispositivo di tunneling sicuro. 

**Nota**  
I seguenti comandi utilizzati negli esempi utilizzano il flag `verbosity` per illustrare una panoramica dei diversi passaggi descritti in precedenza dopo l'esecuzione del proxy locale. È consigliabile utilizzare questo flag solo per effettuare dei test.

**Esecuzione di proxy locale in modalità di origine**  
I comandi seguenti mostrano come eseguire il proxy locale nella modalità di origine.

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

Di seguito è riportato un output di esempio dell'esecuzione del proxy locale nella modalità `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
```

**Esecuzione del proxy locale nella modalità di destinazione**  
I comandi seguenti mostrano come eseguire il proxy locale nella modalità di destinazione.

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

Di seguito è riportato un output di esempio dell'esecuzione del proxy locale nella modalità `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...
```