这是一个似乎遍布各地的问题,但到目前为止我还没有找到明确的答案。是否可以在iPhone应用程序中加载带有自签名安全证书的SSL加密网站?
我负责为我的公司编写iPhone应用程序。我的公司有一个带有自签名证书的SSL-encrypted
网站。该网站使用频率非常高,我的雇主希望通过iPhone轻松访问该网站。我的应用程序的功能是提供一种存储用于访问网站的凭证的方法,当用户打开应用程序时,它会自动将存储的凭据发送到网站,并跳过登录对话框直接进入网站。
我已经设置我的应用程序使用UIWebView
并为该网站加载请求。我已经设置了常用的身份验证方法,如:
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace {...}
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {...}
当我的应用程序达到了代码,我告诉UIWebView
加载NSURLRequest
的一部分,它不会遇到我的任何身份验证方法。它直接跳到didFailLoadWithError
,并且错误告诉我,我正在连接到可能只是冒充我的网站的网站,因为它具有自签名证书。
我该如何解决这个问题?我已经找到了一些涉及NSURLConnection
方法的答案,但是这些方法在我遇到错误之前似乎没有被调用,并且被迫停止加载页面。我也发现了一些涉及覆盖“无证”方法的答案,但是当我尝试实现该解决方案时,我的web视图从未到达“didFailLoadWithError”或“didFinishLoad”,并且从不显示任何内容。
我知道这不是回答你的问题,我讨厌它,当人们提出这样的建议,因为可能有很好的理由,你不能这样做......但是获得非自签名证书的努力和成本是否会降低?他们对像godaddy.com这样的人很便宜,或者免费与http://www.startssl.com/ – Rory 2013-02-16 22:39:13
是的,另一种解决方案是获得签名证书。至于简单地解决我们的具体问题,这可能会更容易。如果我花的时间比我多,我可能会回到我的老板那里并且确切地推荐它。但确保iOS可以处理未签名的证书也很重要。如果不可能这样做,这将成为苹果API的一个主要缺陷,楼上的某个人需要得到通知。谢谢你的提示,但我不知道有一个地方让这些免费。 – Andrew 2013-02-18 19:14:55