iPhone客户端证书

4
我想验证我正在编写的应用是否在iPhone上运行。最理想的情况是:苹果将SSL客户端证书嵌入到每个iPhone中,可以由接收服务器进行身份验证。这是这种情况吗?
我还没有开始研究这个问题,如果有任何发现,我会更新。
更新:这里是一些关于证书和密钥链的苹果文档。所以:
在iPhone OS中,密钥链服务在授予应用程序访问密钥链之前检查其签名,并允许应用程序仅访问其自己的密钥链项目(可能除了应用程序获得持久引用的项目)。在iPhone OS中,用户永远不需要进行身份验证,也没有由Apple提供的密钥链访问实用程序。
3个回答

1

我认为大多数进行此检测的网站是通过查看HTTP_USER_AGENT变量来实现的。


是的,我正在寻找比这更安全的东西。 - Martin Redmond
除非您在每个访问您网站的手机上安装某些东西,否则安全是不可能实现的。 - Greg Hurlman

1

一个可信平台模块可以实现您所需的功能。它被称为远程证明

然而,可信计算的接受度有限——精明的消费者将其视为供应商继续对消费者拥有的设备和数据行使控制的一种方式。苹果勉强承认DRM是愚蠢的,以及TPM的额外成本,这表明iPhone不支持此功能。建议


0
关于Greg上面提到的内容。您可以在头部中添加用户代理,我们在我们的应用程序中已经这样做了。整个http连接代码还有更多细节,但是以下是您可以将用户代理添加到标题的一种方法:
NSMutableURLRequest *request;
NSMutableDictionary *headers;
headers = [[[NSMutableDictionary allocWithZone:[self zone]] init] autorelease];
[headers setValue:@"YourApp/1.0 (iPhone)" forKey:@"User-Agent"];
[request setAllHTTPHeaderFields:headers];

请注意,此代码仅关注头部位,因此您需要实现完整的HTTP解决方案。

我看不出你在这里想要实现什么。任何HTTP头都可以被普通的Web浏览器伪造。 - rook

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接