安装.der文件并在完成时返回应用程序

时间:2012-07-17 14:54:34

标签: ios certificate der

我有一个需要安装证书的应用程序,使用

进行安装
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:CERTIFICATE_URL]];

这会点击Web服务器,获取证书并启动Settings应用程序,允许用户安装证书。

完成后,通过点击完成按钮,“设置”应用会将您带回Safari,但会显示空白页面(或您上次访问过的页面)。

显然我想使用我设置的网址方案回到应用程序。

有没有人有这方面的经验,可以给出任何指示?

我正在考虑拥有一个应用程序带你的登陆页面,告诉你安装证书(点击一个按钮),然后安装时我会认为它会让你返回这个登陆页面,之后我可以做如果我可以确定证书已成功安装,则自动重定向回应用程序..... ??

1 个答案:

答案 0 :(得分:0)

我刚才使用了我的Apple技术支持问题之一。这是对话:

大卫

我正在回答您关于iOS上受信任的根证书的问题。你写道:

所以问题是:是否可以查询设置应用程序/或 安装配置文件以确定是否特定 证书是否已安装。

您可以使用信任对象(SecTrustRef)来评估系统是否信任某个特定证书。我最近发布了一个深入讨论这个整体问题的技术说明。在阅读我的其余回复之前,您应该先阅读此内容。

TN2232“HTTPS服务器信任评估”

http://developer.apple.com/library/ios/#technotes/tn2232/_index.html

技术说明并未涵盖您的具体案例,但相对容易调整其描述的技术来解决您的问题。基本策略是:

  1. 查找证书颁发机构颁发的证书 - 您可以从网站本身获取此证书(使用电影的HEAD请求),或者您可以将其嵌入您的应用中。

    < / LI>
  2. 如果您有证书数据,请从中创建证书对象(SecCertificateRef) - 使用SecCertificateCreateWithData执行此操作。

  3. 从中创建信任对象 - 使用SecTrustCreateWithCertificates执行此操作。您必须提供一个策略对象(SecPolicyRef),但创建其中一个很容易:只需调用SecPolicyCreateBasicX509。

  4. 评估信任对象 - 您可以使用SecTrustEvaluate执行此操作。如果它返回kSecTrustResultProceed或kSecTrustResultUnspecified,则系统信任颁发您在步骤1中启动的证书的证书颁发机构的根证书;如果它返回任何其他内容,则通过HTTPS播放的电影可能会失败。

  5. 另外,我们是否必须离开应用程序才能安装证书?

    是的,尽管您可以通过更改电影播放的工作方式来完全避免此问题。我将在下面更详细地讨论这个问题。

    证书可以以某种方式安装在钥匙串中[...]

    是的,但这不会导致系统(甚至您的应用程序)信任该根证书颁发的证书。在某些情况下,将证书添加到钥匙串很有用(例如,如果它是数字身份的一部分,或者它是中间证书),但它对HTTPS服务器信任评估没有帮助。

                  *                   *                   *
    

    以上都假设您通过渐进式下载播放电影。如果您的电影使用HTTP直播(这是我们通常推荐的),那么有一个/更好/更好的方法来解决这个问题。 TN2232的“HTTP直播流”部分介绍了这个想法,并提供了更详细的信息。

    这种方法提供了许多非常重要的优势:

    o它避免了安装自定义根证书的需要。

    o HTTP Live Streaming通常可以产生更好的播放效果,因为系统会自动适应可用带宽的变化。

    o如果您提供低带宽流,App Review将允许您通过WWAN播放电影。

    o您的媒体片段已加密,因此您可以将它们移动到HTTP服务器(而不是HTTPS服务器)。这可以显着减少内容分发网络的负载。

    我强烈建议您调查此选项。

    如果您对此主题有任何疑问,请与我们联系。

    奎因“爱斯基摩人!”