Ibm mobilefirst Worklight开发是否需要签名的SSL证书?
我正在Worklight 6.0版中进行一个演示,其中我需要使用从iOS和Android到Worklight服务器的SSL 有没有办法在Worklight server中使用自签名或测试证书?或者我是否需要从标准CA购买证书,即使是用于测试/演示 我已经看到了关于如何在Android系统信任库中导入我的证书的参考资料,这看起来很有希望,但我没有看到任何与iOS等效的内容。有许多本机代码解决方案(完全禁用SSL证书验证)以及关于哪些解决方案有效/无效的大量讨论(我找不到关于哪些解决方案在iOS 7上仍然有效的讨论) 将证书导入Android系统truststore是开发的最佳方法吗Ibm mobilefirst Worklight开发是否需要签名的SSL证书?,ibm-mobilefirst,worklight-security,Ibm Mobilefirst,Worklight Security,我正在Worklight 6.0版中进行一个演示,其中我需要使用从iOS和Android到Worklight服务器的SSL 有没有办法在Worklight server中使用自签名或测试证书?或者我是否需要从标准CA购买证书,即使是用于测试/演示 我已经看到了关于如何在Android系统信任库中导入我的证书的参考资料,这看起来很有希望,但我没有看到任何与iOS等效的内容。有许多本机代码解决方案(完全禁用SSL证书验证)以及关于哪些解决方案有效/无效的大量讨论(我找不到关于哪些解决方案在iOS 7
是否有一个简单的iOS解决方案允许自签名或测试证书,而不完全禁用证书检查 是的,您可以通过执行以下操作来实现这一点:
当前Worklight应用程序无法使用自签名证书。它将用于生产,因此它只接受有效的CA证书。确定。我没有找到通用的答案,也没有找到接受特定证书的方法,但在iOS和Android上,可以禁用客户端证书验证以进行开发和测试 在Android中,默认清单已经配置为忽略证书验证。默认情况下,AndroidManifest.xml中的应用程序元素具有一个属性:
android:debuggable="true"
使用此设置,客户端不会验证服务器提供的SSL证书。因此,在Android上,自签名证书在默认情况下可以正常工作。需要记住的重要一点是,当您从开发转移到生产时,将该属性设置为false是很重要的。当该属性设置为false时,客户端将验证服务器提供的证书,因此您需要为生产服务器提供一个真正的签名证书。(有道理)
在iOS中,有几种建议的解决方案,我使用的是在我的@implementation NSURLRequest(DataController)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host
{
return YES;
}
@end
据我所知,这是一个未发布的API,覆盖它是一种不好的形式,但它可以工作,而且这只是为了开发,所以我将使用它
我想我可以聪明一点,在盲目返回YES之前检查Worklight Server的主机名,但无论如何,添加上述代码确实允许我的应用程序在Worklight Server上使用带有自签名证书的SSL
这两个“解决方案”都需要在应用程序投入生产之前删除,因为它们使应用程序容易受到中间人攻击。但是对于开发/早期测试/演示,它们允许SSL,而不必获得真正的签名证书。有一种非常简单的方法可以将未经已知CA签名的证书用于开发和测试目的 请注意,此支持并非来自Worklight。是否允许您为这些类型的证书建立信任,实际上取决于每个移动平台。上面David给出的建议实际上只是禁用SSL验证的变通方法,在某些情况下,SSL验证可能是一种有效的替代方法。然而,android:debugable标志仅在不涵盖某些场景(如启用directUpdate时)的情况下才起作用。再加上禁用所有形式的SSL验证,即使在开发/测试环境中也可能不是您真正想要的 以下是您可以做的:
- 有关如何创建自签名CA证书的OpenSSL示例:
- 通过查看设置->常规->配置文件->配置文件,检查是否安装了该软件
- 确保iOS能够识别它并将其标记为“受信任”