Servidor Tcp asíncrono de C # con SSL. ¿Cómo puedo get la authentication mutua con iOS NSStream?

Esta es mi primera publicación en stackoverflow.com, así que si hago algo mal, házmelo saber. Entonces, sobre el problema.

Tengo un server C# actualmente ejecuta System.Net.Socket Sockets similar al código de ejemplo que Microsoft proporciona aquí .

También tengo un cliente de iPad Objective-C que ejecuta NSInputStream/NSOutputStream enlazado a CFReadStream/CFWriteStream .

En la actualidad solo con la authentication de nombre de usuario / contraseña enviada a través de un XML Serialized Object el cliente y el server pueden comunicarse sin problemas.

El problema que tengo ahora es que la comunicación debe ser segura, y hablar con los clientes, el SSL encryption sería aceptable. Sin embargo, no creo que acepten solo el "Certificado de Servidor" lo suficientemente bueno. Por lo tanto, estoy intentando que el cliente iPad use un "Certificado de cliente". Me gustaría habilitar authentication mutua verdadera.

Si no puedo lograr la authentication mutua, un software VPN terceros podría ser la mejor solución para asegurar la comunicación.

Todavía no he completado la conversión, pero he encontrado algunos artículos que me dan buenos ejemplos de esto, pero no hay ejemplos que se ajusten a mi situación para los certificates del lado del cliente en el iPad. Las muestras que he encontrado son:

Servidor Tcp C # SSL

Sitio de desarrollador de Apple que muestra cómo usar SSL, pero ningún certificate de cliente

iPad SSL Stream sin certificate de cliente.

iPad SSL Stream sin certificate de cliente

iPad HTTP Client que usa certificate de cliente

Básicamente, el sistema debe ejecutar la comunicación TCP con SSL embedded con la capacidad de administrar certificates. No estoy seguro si hace una diferencia, pero como esto iría a muchos clientes diferentes, es preferible ser compatible con SSL 3.0 y TLS (cualquier versión).

Como he estado incursionando en Objective-C durante los últimos 6 meses y estoy más familiarizado con C# , probablemente necesito que expliques tu respuesta en términos más simples.

Editar:
Estoy más preocupado por el lado de la ecuación de Objective-C , ya que estoy bastante seguro de que el lado de C# será simple. Básicamente necesito a alguien para explicar cómo implementar los certificates del lado del cliente en un TCP NSStream en Objective-C o señalarme en la dirección de posibles soluciones o enfoques del problema.

Cualquier ayuda será apreciada.

Chris

No puedo responder a su pregunta sobre cómo implementar esto en el lado del objective c, ya que lo que pide es más allá de lo que una aplicación única puede lograr en dispositivos iOS . Pensar más allá..

Desde Apple:

iOS es compatible con el Protocolo simple de inscripción de certificates (SCEP). SCEP es un borrador de Internet en el IETF, y está diseñado para proporcionar una forma simplificada de manejar la distribución de certificates para implementaciones a gran escala. Esto permite la inscripción por air de certificates de identidad a iPhone y iPad que se pueden usar para la authentication de services corporativos.

Saber esto y search SCEP en la biblioteca de desarrolladores me indica esta página: https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/Introduction/Introduction.html

Esta página será de interés, observe que Microsoft Server admite esto: – https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/OTASecurity/OTASecurity.html#//apple_ref/doc/ uid / TP40009505-CH3-SW1 e incluso tiene un código de cliente / server de ejemplo.

Mi interés está generalmente en el campo de la Gestión de dispositivos mobilees y he estado investigando esto.

Espero que esto ayude.

Echa un vistazo a CFSocket y / o CkoSocket