好的。我沒有找到通用的答案,也沒有找到接受特定證書的方式,但在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