

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

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