【发布时间】:2014-08-21 09:13:23
【问题描述】:
我在我的项目中使用 iPhoneHTTPServer 示例来使用 HTTPServer,并使用 .ipa 托管一个 .plist 文件来模拟临时部署。
您可能知道,从 iOS7 开始,托管文件的服务器必须受到保护,因此我尝试使用 SSL 身份验证,但失败了。
首先,服务器似乎可以正确启动,但是当我尝试像这样访问我的服务器时它失败了:
NSURL *plistUrl = [NSURL URLWithString:@"itms-services://?action=download-manifest&url=https://localhost:8080/TestMAJ2.plist"];
[[UIApplication sharedApplication] openURL:plistUrl];
我有这个错误:
NSAssert(NO, @"Security option unavailable - kCFStreamSSLLevel" @" - You must use GCDAsyncSocketSSLProtocolVersionMin & GCDAsyncSocketSSLProtocolVersionMax");
如何绕过此错误?我试图删除 TLS 设置的 kCFStreamSSLLevel(为什么不?^^),但连接仍然无法正常工作,我有一个弹出窗口“无法连接到本地主机”或类似的东西......
关于 SSL 身份验证,示例中的 DDKeychain 类不好,因为它是 Mac 的 API,所以我使用此代码:How to make iPhoneHTTPServer secure server,证书来自 Keychain Access,它是我用于签署我的证书的证书应用程序。也许它不是正确的证书?还是正确的代码?你知道在 iOS 中使用 SecureHTTPServer 的一个非常简单的例子吗?
【问题讨论】:
-
没人能解决我的问题吗?
-
使用
[sslSettings setObject:[NSNumber numberWithInteger:2] forKey:GCDAsyncSocketSSLProtocolVersionMin]; [sslSettings setObject:[NSNumber numberWithInteger:2] forKey:GCDAsyncSocketSSLProtocolVersionMax];绕过这个错误。基本上这会将 TLS 版本设置为 2
标签: ios objective-c ssl cocoahttpserver