带SSL的C#异步Tcp服务器.如何与iOS NSStream进行相互身份验证?

use*_*113 9 c# cross-platform client-certificates ssl-certificate ios

这是我在stackoverflow.com的第一篇文章,所以如果我做错了,请告诉我.所以就这个问题.

我有一个C#正在运行的服务器System.Net.Socket类似于微软提供的示例代码接在这里.

我也有一个Objective-CiPad的客户端运行NSInputStream/NSOutputStream必然CFReadStream/CFWriteStream.

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

我现在面临的问题是通信必须是安全的,并且与客户交谈SSL encryption是可以接受的.但是,我不认为他们会接受"服务器证书"这么好.所以我试图让iPad客户端使用"客户端证书".我想启用真正的相互身份验证.

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

我还没有完成转换,但是我发现了一些文章给了我很好的例子,但是没有适合我在iPad上的客户端证书情况的例子.我找到的样本是:

C#SSL Tcp服务器

Apple Developer站点,显示如何使用SSL,但没有客户端证书

iPad SSL Stream没有客户端证书.

iPad SSL Stream没有客户端证书

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

基本上,系统必须最终TCP与SSL嵌入式系统进行通信,并具有管理证书的能力.不确定它是否有所作为,但由于这将涉及许多不同的客户端,因此最好SSL 3.0与TLS(和任何版本)兼容.

由于我Objective-C过去6个月只涉足并且更熟悉C#,我可能需要您用更简单的术语解释您的答案.

编辑:
我更关注Objective-C等式的一面,因为我相信这C#方面会很简单.基本上我需要有人解释如何在上面实现客户端证书TCP NSStream,Objective-C或指向我可能的解决方案或方法来解决问题.

任何帮助将不胜感激.

克里斯

小智 2

我无法回答您关于如何在 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,它甚至还有一些示例客户端/服务器代码。

我的兴趣主要集中在移动设备管理领域,并且一直在研究这个领域。

希望这可以帮助。