9

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

我有一台C#服务器当前正在运行System.Net.Socket类似于 Microsoft在此处提供的示例代码的 Sockets 。

我还有一个Objective-C运行NSInputStream/NSOutputStream绑定到CFReadStream/CFWriteStream.

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

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

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

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

C# SSL TCP 服务器

Apple 开发者网站,展示了如何使用 SSL,但没有客户端证书

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

没有客户端证书的 iPad SSL 流

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

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

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

编辑:
我更关心Objective-C等式的一侧,因为我相当确定这C#一侧会很简单。基本上,我需要有人解释如何在 in 上实施客户端证书TCP NSStreamObjective-C或者为我指明可能的解决方案或解决问题的方法的方向。

任何帮助将不胜感激。

克里斯

4

2 回答 2

2

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

来自苹果:

iOS 支持简单证书注册协议 (SCEP)。SCEP 是 IETF 中的 Internet 草案,旨在为大规模部署提供一种处理证书分发的简化方法。这使得身份证书能够无线注册到 iPhone 和 iPad,可用于对企业服务进行身份验证。

知道这一点并在开发人员库中搜索 SCEP 将我指向此页面 - https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/Introduction/Introduction.html

这个页面会很有趣,注意微软服务器支持这个:- https://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/iPhoneOTAConfiguration/OTASecurity/OTASecurity.html#//apple_ref/doc/ uid/TP40009505-CH3-SW1,它甚至还有一些示例客户端/服务器代码。

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

希望这可以帮助。

于 2012-10-09T09:29:55.533 回答
1

查看CFSocket和/或CkoSocket

于 2012-11-30T19:22:07.097 回答