HTTPS per comunicazione bidirezionale

0

Sto creando un sistema che permetterà all'utente di controllare un certo numero di dispositivi hardware remoti. Ogni dispositivo (il client) è connesso a un server Web micro, che risponde alle richieste HTTP (S).

Il client deve inviare dati al server (contenente lo stato corrente dell'hardware). Il server deve inviare dati al client (per dire al cliente cosa fare). Client e server possono inviare dati alla controparte quando vogliono.

Ora, sono preoccupato per la sicurezza ... Che ne dici di utilizzare HTTPS con certificato SSL autofirmato per il client?

Supponiamo che io acquisti un certificato per il mio server di dominio (fornito da una CA esterna affidabile) e creo un certificato autofirmato diverso per ogni cliente. Posso beneficiare della sicurezza HTTPS nelle due direzioni di comunicazione (da client a server e da server a client)?

In questo caso il server memorizzerà i diversi certificati client, in modo che possa stabilire una connessione sicura quando desidera inviare un comando al client. È giusto?

Modifica 1

Il "client" (il dispositivo hardware) funge da server quando riceve un comando dall'utente remoto. Funziona come client quando invia il suo stato hardware al server. Questi casi avvengono in due momenti diversi. Quindi, entrambe le parti dovrebbero essere in grado di connettersi con la controparte come client o server a seconda dei casi.

    
posta Riccardo Leschiutta 04.01.2017 - 10:21
fonte

1 risposta

1

In questo caso, sarebbe probabilmente meglio andare per i certificati autofirmati per i client, idealmente usando una CA interna di cui il tuo server è a conoscenza. Questa situazione non presenta il solito svantaggio dei certificati autofirmati che forniscono un avviso del browser, poiché è previsto che solo il server si connetta ai client.

Tuttavia, non vorrai fare affidamento solo sul processo di autenticazione HTTPS di base. Mentre ciò fornirebbe la crittografia in entrambe le direzioni, non ti permetterebbe di verificare che sia il tuo server che si connette - potrebbe essere qualsiasi altro dispositivo. Potresti invece utilizzare l'autenticazione Certficate HTTP (vedi Autenticazione basata su certificato vs Nome utente e l'autenticazione della password per una descrizione) e rendi i tuoi clienti consapevoli del certificato che il server deve presentare. Questo è un po 'più complicato da configurare rispetto alla normale crittografia, poiché entrambe le estremità devono essere consapevoli dell'altra. Il vantaggio, tuttavia, è che puoi essere sicuro che solo il tuo server (o un utente malintenzionato che ha compromesso il tuo server e copiato il file della chiave privata) possa connettersi ai dispositivi client.

A seconda della configurazione, questo processo potrebbe non essere necessario in entrambe le direzioni: si potrebbe ritenere accettabile che altri dispositivi si connettano al server, quindi le connessioni dai dispositivi client vengono crittografate solo senza la necessità di verificare il certificato del server, mentre le connessioni dal server devono essere verificati dal client, poiché è l'unico dispositivo di connessione previsto. Ciò semplificherebbe anche l'aggiunta di nuovi client - hanno bisogno di sapere quale certificato attendersi dal server, ma il server non ha bisogno di essere aggiornato per sapere quale certificato hanno. Questa sarebbe comunque una decisione basata sulla situazione specifica.

    
risposta data 04.01.2017 - 12:11
fonte

Leggi altre domande sui tag