带有SSL的C#异步Tcp服务器.如何使用iOS NSStream获得相互身份验证



这是我在stackoverflow.com上的第一篇帖子,所以如果我做错了什么,请告诉我。问题就这么来了。

我有一个C#服务器当前运行System.Net.Socket套接字,类似于Microsoft在这里提供的示例代码。

我还有一个运行NSInputStream/NSOutputStreamObjective-CiPad客户端绑定到CFReadStream/CFWriteStream

目前,只有通过XML Serialized Object发送的用户名/密码身份验证,客户端和服务器可以毫无问题地进行通信。

我现在遇到的问题是,通信必须是安全的,与客户交谈时,SSL encryption是可以接受的。然而,我认为他们不会仅仅接受"服务器证书"就足够了。所以我正在尝试让iPad客户端使用"客户端证书"。我希望启用真正的相互身份验证。

如果我不能实现相互身份验证,第三方VPN软件可能是更好的通信安全解决方案。

我还没有完成转换,但我发现了一些文章给了我很好的例子,但没有适合我在iPad上使用客户端证书的例子。我发现的样品是:

C#SSL Tcp服务器

苹果开发者网站,显示如何使用SSL,但没有客户端证书

没有客户端证书的iPad SSL流。

没有客户端证书的iPad SSL流

使用客户端证书的iPad HTTP客户端

基本上,系统最终必须运行TCP通信,SSL嵌入了管理证书的能力。不确定它是否有区别,但由于这将适用于许多不同的客户端,因此最好与SSL 3.0TLS(任何版本)兼容。

由于我在过去的6个月里才涉足Objective-C,而且对C#更熟悉,我可能需要你用更简单的术语解释你的答案。

编辑:
我更关心方程的Objective-C边,因为我确信C#边会很简单。基本上,我需要有人解释如何在Objective-C中的TCP NSStream上实现客户端证书,或者为我指明可能的解决方案或方法。

任何帮助都将不胜感激。

Chris

我无法回答您关于如何在objective-c方面实现这一点的问题,因为您所问的问题超出了单个应用程序在IOS设备上所能实现的。跳出框框思考。。

来自苹果:

iOS支持简单证书注册协议(SCEP)。SCEP是IETF中的互联网草案,旨在提供大型企业证书发放的简化处理方法部署。这使得身份的空中登记成为可能iPhone和iPad的证书,可用于身份验证企业服务。

知道这一点并在开发人员库中搜索SCEP,我就找到了这个页面-https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/Introduction/Introduction.html

请注意,Microsoft Server支持以下功能:-https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/OTASecurity/OTASecurity.html#//apple_ref/doc/uid/TP40009505-CH3-SW1,它甚至有一些示例客户端/服务器代码。

我的兴趣通常是在移动设备管理领域,并一直在研究这一点。

希望这能有所帮助。

查看CFSocket和/或CkoSocket

最新更新