【发布时间】:2010-02-10 15:04:08
【问题描述】:
我正在编写一个在 iphone 上使用 NSStream 的 SSL 功能的应用程序。我知道 SSL 有效,因为我可以使用 SSL 直接连接服务器。
我遇到了一个问题,使用 starttls 的协议要求我在不安全的套接字上进行通信,发送 starttls 命令,然后为 SSL 重用同一个套接字。据我所知,nsstream 连接无法重复使用,并且在打开连接后我无法在它们上启动 SSL。
我考虑过创建自己的套接字,手动在其上进行通信,然后使用现有套接字设置 NSstream 并以这种方式启动 SSL。但是,似乎套接字上的通信将其置于我无法在其上启动 SSL 的状态。任何将套接字用于 nsstream 的尝试都会导致错误。
有什么想法吗?
【问题讨论】:
-
您是否尝试过在已打开的 NSSocket 上使用适当的安全常量调用 setProperty:forKey:?我相信底层的 SecureTransport 代码支持从未加密的初始连接切换到 TLS/SSL。
-
所以我想通了。您应该使用 CFsockets 而不是 NSsockets,然后在连接后应用 SSL,即使文档说您不能这样做,它也会正确协商安全连接。
-
没有“NSsockets”之类的东西
-
请将您的解决方案添加为答案并将其标记为答案。这使未回答的问题列表现在变得杂乱无章,而且您没有获得可以使用的代表点数。
标签: iphone sockets ssl nsstream