Comunicazione socket sicura tra dispositivo iOS e server di terze parti

1

Vorrei il tuo consiglio su quale sia l'approccio migliore per la sfida tra le mie mani ...

Sto sviluppando un'estensione di un software di terze parti. Sto facendo il mio sviluppo usando Python / Twisted / Autobahn. I risultati finali devono essere un server WebSockets che supporta comunicazioni crittografate / protette. Gli utenti riceveranno questa estensione e la installeranno sulle loro macchine, quindi possono essere 'qualsiasi' nome host, IP, ecc. Non noti in anticipo.

Il client (WebSocket) di questa estensione software è un'app per iOS (che utilizza SocketRocket) che richiede all'utente di fornire l'IP e la porta della propria installazione a cui connettersi. L'app per iOS proviene dall'app store di Apple, quindi non è personalizzata per utente.

In questo scenario qual è il modo migliore per rendere questa connessione tra l'app iOS (client Websocket) e l'estensione software (server Websocket) sicura / criptata?

Inizialmente pensavo che i certificati, avendo wss forzato le connessioni sul WebSocket Server, ma questo richiede che ogni utente crei il proprio certificato e non so se il dispositivo iOS lo "accetterà" e lo "userà"?

Ho pensato di cambiare l'architettura e di avere un livello intermedio, rendendo l'estensione un client websocket avendo così un unico punto di contatto, questa idea è stata respinta.

Qualche alternativa dovrei prendere in considerazione?

Grazie!

    
posta Kostas 17.05.2015 - 12:01
fonte

1 risposta

0

Potresti generare un certificato alla prima esecuzione e quindi utilizzare certificato / pin chiave pubblica all'interno dell'applicazione per verificare che si sta connettendo al server giusto.

Questo ti permetterà di usare HTTPS su SSL / TLS. A quanto pare, molte app esistenti utilizzano certificati autofirmati . Potresti forse visualizzare i dettagli del certificato che riceve dalla prima connessione per consentire all'utente di verificare che sia quello appena creato sul loro server WebSocket: una volta accettato, la chiave pubblica viene archiviata nell'app e solo i certificati con il pubblico archiviato la chiave sarà accettata.

    
risposta data 18.05.2015 - 09:50
fonte

Leggi altre domande sui tag