Ios 安装.der文件,完成后返回应用程序

Ios 安装.der文件,完成后返回应用程序,ios,certificate,der,Ios,Certificate,Der,我有一个需要安装证书的应用程序,它是使用证书安装的 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:CERTIFICATE_URL]]; 这将访问web服务器,获取证书并启动允许用户安装证书的设置应用程序 完成后,点击“完成”按钮,设置应用程序会将您带回Safari,但会显示一个空白页面(或您上次访问的页面) 显然,我想使用我设置的url方案返回应用程序 有没有人有这方面的经验并能给出一些建议 我在考虑有一个登录页

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

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:CERTIFICATE_URL]];
这将访问web服务器,获取证书并启动允许用户安装证书的设置应用程序

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

显然,我想使用我设置的url方案返回应用程序

有没有人有这方面的经验并能给出一些建议


我在考虑有一个登录页,应用程序也会带你去,告诉你安装证书(点击按钮),然后,当它安装时,我假设它会将您返回到此登录页,然后如果我能确定证书安装成功,我可以自动重定向回应用程序…?

我刚才用了一个苹果技术支持问题来回答这个问题。以下是对话:

大卫

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

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

您可以通过使用信任对象(SecTrustRef)来评估特定证书是否受系统信任。我最近发表了一篇技术报告,深入讨论了这个整体问题。在阅读我的其余回复之前,你应该先阅读这篇文章

TN2232“HTTPS服务器信任评估”

technote并没有涵盖您的具体案例,但它相对容易适应它所描述的技术来解决您的问题。基本战略是:

  • 查找由证书颁发机构颁发的证书——您可以从网站本身(使用电影的HEAD请求)获取该证书,也可以将其嵌入应用程序中

  • 如果您有证书数据,请从中创建一个证书对象(SecCertificateRef)——您可以使用SecCertificateCreateWithData来执行此操作

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

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

  • 此外,我们是否必须离开应用程序才能安装证书

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

    证书是否可以以某种方式安装在密钥链中[…]

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

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

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

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

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

    o如果您提供低带宽流,应用程序评论将允许您通过WWAN播放电影

    o您的媒体段已加密,因此您可以将其移动到HTTP服务器(而不是HTTPS服务器)。这可以显著降低内容分发网络的负载

    我强烈建议您调查此选项

    如果你对这个话题还有任何疑问,请告诉我


    Quinn“爱斯基摩人!”

    你有什么办法奏效吗?没有,这个过程仍然在使用。我改进了代码,使用安全框架检查证书是否在用户即将观看DRM文件时安装,而不是要求每个用户在第一次安装应用程序时安装证书。但是,我们的PlayReady实现不再需要此证书安装过程,因此这对我来说不再是问题。谢谢,我正在尝试在应用程序中安装.der,但我无法使其正常工作,因此我可能会使用您的方法。我已经添加了一个从苹果技术支持部门获得的答案。