好的。我没有找到通用的答案,也没有找到接受特定证书的方式,但在iOS和Android上,可以禁用客户端证书验证以进行开发和测试。
在Android中,默认清单是已配置为,以忽略证书验证。默认情况下,在AndroidManifest.xml中的应用元素具有属性:
android:debuggable="true"
使用此设置,客户端不验证服务器提供的SSL证书。所以在Android上,自签名证书只是默认工作。要记住的重要一点是,当您从开发转移到生产时,将此属性设置为false非常重要。当该属性设置为false时,客户端会验证服务器提供的证书,因此您需要生产服务器的真实签名证书。 (有道理)
在iOS中,有几个建议的解决方案,我正在使用的是将以下内容添加到我的<应用程序名称>的末尾。M档:
@implementation NSURLRequest(DataController)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
return YES;
}
@end
从我所收集,这是一个未公开的API,并重写它是坏的形式,但它的工作原理,这是只发展,所以我用它去。
我想我可能很聪明,在盲目返回YES之前检查我的Worklight Server的主机名,但在任何情况下,上面的代码的添加都允许我的应用程序使用带有自签名证书的SSL worklight服务器。
这些“解决方案”都需要在应用程序投入生产之前删除,因为它们使应用程序容易受到中间人攻击。但是对于开发/早期测试/演示,它们允许使用SSL而不必获得真正的签名证书。
希望我在过去知道iOS的这个API ......这很好。 – jnortey