10

我在我的 iPhone 3G OS 3.0.1 上使用我的 iPhone 应用程序没有任何问题。应用程序连接到位于https://api.serverdensity.com/1.0/的 API URL,所有请求都通过它。

该应用程序的用户报告说他们现在突然收到错误“不受信任的服务器证书”。没有其他用户遇到这个问题(我知道),我无法重现它。

SSL 证书是 *.serverdensity.com 上的通配符证书。它是从 GoDaddy 购买的,有效期至 2010 年 5 月。

此外,用户正在运行 OS 3.0.1,设备上的时间/日期设置正确,如果他在 Safari 中访问 API URL,它会正确加载。

对此原因有什么建议吗?

4

8 回答 8

6

我有同样的问题!

您是否在那里安装了“中间证书包”?如果您不这样做,那么您将在所有移动平台(以及一些 PC 平台)上获得不受信任的服务器证书。

网站报价:

在安装您颁发的 SSL 证书之前,您必须在您的 Web 服务器上下载并安装我们的中间证书包。您也可以从存储库下载捆绑包。

查看适用于您的 Web 服务器设置的GoDaddy SSL 安装说明

可以在此处找到中间证书包。

于 2009-08-22T20:33:56.430 回答
6

看起来一切都与证书的安装有关。服务器正在发送所有中间证书:http ://www.sslshopper.com/ssl-checker.html?hostname=api.serverdensity.com

于 2009-08-27T02:53:59.517 回答
4

如果您遇到“服务器证书不受信任”的错误,请验证您的 iPhone 或 iPod 的日期和时间设置。

从 iPhone/iPod“设置”中更正日期和时间后。它会自动处理所有遇到“不受信任的服务器证书”问题的应用程序(即 Yahoo messenger、Citrix、Push mail ....etc)。试一试吧。希望对你有一点帮助。谢谢。

于 2010-10-09T06:01:56.597 回答
3

早期的 iO​​S 和 android 设备带有一个小于桌面浏览器的根证书数据库。您需要将中间 CA 证书与服务器证书连接起来,并让 Web 服务器将它们全部发送到手机。后来的 iOS 和 android 版本通过在设备上包含更多 ca 证书来解决此问题。

于 2011-07-24T04:06:37.923 回答
2

我实际上已经在我自己的应用程序中看到了这一点,该应用程序也使用了 Godaddy 证书 - 是的,我已经在我的服务器上安装了中间证书。

这种情况很少见,但如果用户进入一个 wifi 热点,该热点将其登录页面插入连接尝试,就会发生这种情况。这实际上是 SSL 的正确行为,它是由热点有效地为您的 URL 执行中间人重定向引起的。

他们可以通过首先进入 Safari 并让连接正常工作来修复它。

OS3.0 应该对这种热点进行一些自动登录,但根据我的经验,它并不总是有效。

编辑:补充一点,在我使用 SSL 之前,我曾经为纯 http 检测到这一点并提出适当的错误消息。可能建议在您的应用程序中捕获此错误并发出类似的消息“您可能已连接到需要您登录的热点”等。现在您已经提醒我,我需要自己做应用程序。

于 2009-08-22T20:38:47.137 回答
2

在连接到我们的 API 时,我们之前使用基本 HTTP AUTH 的“硬编码”身份验证方法:

NSString *requestURL = [NSString stringWithFormat:@"https://%@:%@@api.serverdensity.com/1.0/?account=%@.serverdensity.com&c=%@", username, password, account, command];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:requestURL] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];

但在我们的最新更新中切换到使用“正确”的方法:

NSString *requestURL = [NSString stringWithFormat:@"https://api.serverdensity.com/1.0/?account=%@.serverdensity.com&c=%@", account, command];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:requestURL] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60.0];

使用NSURLCredential正确处理 HTTP 身份验证。在此更新之后,相关用户的证书错误消失了。

于 2009-09-02T12:01:34.433 回答
0

我在我的越狱测试手机上看到了相同的错误消息,但在我的其他测试手机上没有。我从来没有进一步调查它,但我想我会提到以防万一......

于 2009-08-23T01:45:54.227 回答
0

我会确认您的手机可以在没有警告的情况下加载任何 https:// 网址。我有一部旧的 3.1.3 iPhone,出于某种原因,它会警告它遇到的每个证书。不知道是什么原因,但它对于测试我的 Web 服务几乎毫无用处。

于 2011-06-08T19:46:30.513 回答