这是我在stackoverflow.com上的第一篇帖子,所以如果我做错了什么,请告诉我。问题就这么来了。
我有一个C#
服务器当前运行System.Net.Socket
套接字,类似于Microsoft在这里提供的示例代码。
我还有一个运行NSInputStream/NSOutputStream
的Objective-C
iPad客户端绑定到CFReadStream/CFWriteStream
。
目前,只有通过XML Serialized Object
发送的用户名/密码身份验证,客户端和服务器可以毫无问题地进行通信。
我现在遇到的问题是,通信必须是安全的,与客户交谈时,SSL encryption
是可以接受的。然而,我认为他们不会仅仅接受"服务器证书"就足够了。所以我正在尝试让iPad客户端使用"客户端证书"。我希望启用真正的相互身份验证。
如果我不能实现相互身份验证,第三方VPN
软件可能是更好的通信安全解决方案。
我还没有完成转换,但我发现了一些文章给了我很好的例子,但没有适合我在iPad上使用客户端证书的例子。我发现的样品是:
C#SSL Tcp服务器
苹果开发者网站,显示如何使用SSL,但没有客户端证书
没有客户端证书的iPad SSL流。
没有客户端证书的iPad SSL流
使用客户端证书的iPad HTTP客户端
基本上,系统最终必须运行TCP
通信,SSL
嵌入了管理证书的能力。不确定它是否有区别,但由于这将适用于许多不同的客户端,因此最好与SSL 3.0
和TLS
(任何版本)兼容。
由于我在过去的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