Comunicación de socket segura entre el dispositivo iOS y el servidor de terceros

1

Me gustaría su consejo sobre cuál es el mejor enfoque para el desafío en mis manos ...

Estoy desarrollando una extensión para un software de terceros. Estoy haciendo mi desarrollo usando Python / Twisted / Autobahn. Los resultados finales deben ser un servidor WebSockets que admita comunicaciones cifradas / seguras. Los usuarios recibirán esta extensión y la instalarán en sus máquinas, por lo que pueden ser 'cualquier' nombre de host, IP, etc., no conocidos de antemano.

El cliente (WebSocket) de esta extensión de software es una aplicación de iOS (que usa SocketRocket) que requiere que el usuario proporcione la IP y el puerto de su instalación para conectarse. La aplicación iOS proviene de la tienda de aplicaciones de Apple, por lo que no se personaliza por usuario.

En este escenario, ¿cuál es la mejor manera de hacer que esta conexión entre la aplicación iOS (websocket client) y la extensión de software (servidor websocket) sea segura / encriptada?

Inicialmente pensé que los certificados tenían wss conexiones forzadas en el servidor WebSocket, pero esto requiere que cada usuario cree su propio certificado y no sé si el dispositivo iOS lo "aceptará" y "usará". >

Pensé en cambiar la arquitectura y tener un nivel medio, haciendo de la extensión un cliente de websocket, teniendo un solo punto de contacto, esta idea fue rechazada.

¿Alguna alternativa que deba considerar?

¡Gracias!

    
pregunta Kostas 17.05.2015 - 12:01
fuente

1 respuesta

0

Podrías generar un certificado en la primera ejecución y luego usar fijación de la clave pública / certificado dentro de la aplicación para verificar que se está conectando al servidor correcto.

Esto le permitirá utilizar HTTPS sobre SSL / TLS. Al parecer, muchas de las aplicaciones existentes utilizan certificados autofirmados . Quizás pueda mostrar los detalles del certificado que recibe de la primera conexión para permitir que el usuario verifique que es el que acaba de crear en su servidor WebSocket. Una vez aceptada, la clave pública se almacena en la aplicación y solo los certificados con el público almacenado. Se aceptará la clave.

    
respondido por el SilverlightFox 18.05.2015 - 09:50
fuente

Lea otras preguntas en las etiquetas