iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在远程加载客户端证书的iOS中实现SSL相互身份验证?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在iOS应用中实现SSL相互身份验证.
在我看到的大多数示例中,客户端证书与应用程序包捆绑在一起.但就我而言,我需要远程加载客户端证书(即通过链接或通过电子邮件).

如果我尝试从外部源(即邮件应用程序)加载证书,它会导航到设置应用程序并将其安装到苹果的钥匙串.因此,我的应用无法访问此证书.

所以有人请为此提出建议吗?

解决方法

我在内部的iPad应用程序中构建了一个这样的系统.

忘记系统首选项,配置文件等.以这种方式安装的所有证书都是第三方应用程序无法访问的,但仅限于系统应用程序,可能是因为它们已安装到Apple钥匙串中.

我已经探索了这三种方法来加载证书并使用最后一种:

>捆绑到应用程序,因为您已经看到是不切实际的
>从其他应用发送文件(例如电子邮件)
>使用链接下载(我做了什么)

前言

>我认为你已经建立了你的simil-PKI,带有CA,@L_801_10@/手动方式来发放/撤销证书等.
所以问题是交付给设备.
>对于所有解决方案,我建议使用强密码以PKCS#12格式保存私钥和证书.
>使用MDM管理设备,如果您的应用是内置的,将与公司的设备一起使用,监督它们以增加选项
(例如Meraki,是免费的,但不处理ManagedAppConfiguration)

解决方

解决方案1)

不切实际因为使用特定证书生成不@R_212_11197@的应用程序非常困难(不可能).更不用说在用户的每个设备上处理特定版本的分发几乎是不可能的.

解决方案2)

>保存.p12文件
>将文件扩展名更改为自定义扩展名
>注册该扩展程序以使用您的应用程序打开,因此在“打开方式…”中将列出您的应用程序
“Open in” for specific document type

最安全的方法应该是用户可以选择密码来加密.p12文件,这样当打开p12时,用户必须输入密码,但这导致其他工作使其工作.
一种不太安全但有效的方法是使用嵌入在应用程序中的单个强密码,并将其用于所有.p12文件

解决方案3)

与2)类似,但您直接从Web应用程序的特定URI下载文件,这允许一些自动配置,因为应用程序可以识别自己.

基本上这些是步骤:

>该应用程序通过httpS连接到@R_95_9616@程序的特定URl.
>检查服务器证书是否正确(可信来源).
>发送一些东西进行身份验证.
在我们的例子中,我使用我在设备准备期间设置的设备名称,我可以使用MDM远程更改它.
>下载包含证书的配置包
我使用JSON有效负载发送PKCS#12文件base64编码和其他数据来配置应用程序.

如果您的MDM@L_910_36@managedAppConfiguration,您可以更改这些操作以构建更灵活的行为:
使用ManagedAppConfiguration,您可以远程发送每个应用程序NSUserDefaults中的特定字符串,这样您就可以使用不同的或临时的URL /令牌来下载配置包,并完全放弃使用设备名称进行身份验证.

WWDC 2014 #704 – Building Apps for Enterprise and Education ~13:00
Apple Developer – ManagedConfig Sample App

加入PARANOIA

>记录一切!应用程序的这一部分所做的一切(失败/错误请求,不存在设备名称请求等)>仅当我们需要配置新设备时,才会激活/停用配置URl.您可以通过多种方式完成此操作,我的webapp会检查是否存在特定文件,因此我可以执行某些操作,例如触摸APP_CERTIFICATES_CONfig_ENABLED以激活自动配置服务并禁用删除文件的所有内容.只是为了确保在没有我监督的情况下不会出现证书.

大佬总结

以上是大佬教程为你收集整理的如何在远程加载客户端证书的iOS中实现SSL相互身份验证?全部内容,希望文章能够帮你解决如何在远程加载客户端证书的iOS中实现SSL相互身份验证?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。