从OSX复制一个应用程序在调用Web API时使用的p12证书

问题描述:

我在stackoverflow上读取了this question,所以我知道我无法从应用程序读取配置文件中已安装的证书。从OSX复制一个应用程序在调用Web API时使用的p12证书

这是我已经试过:

  1. 复制证书(或.p12),这是自签名从通过空投我的MacBook。
  2. 然后iPhone会问我安装它,所以我安装了。
  3. 现在我可以在Settings->General->Profiles & Device Management中看到证书,但在配置文件中有Signed by以下的红色字Not Verified。我想这是因为证书是自签名的。
  4. 我开发的应用程序使用[NSURLSession dataTaskWithURL: ...]来请求一个网页,没有[URLSession: didReceiveChallenge: ...]
  5. 该应用程序得到错误Code=-1202 "The certificate for this server is invalid.",这是我安装证书之前得到的同样的错误。

更新:我又尝试过了,我注意到,我拿到了证书没有签署,也许这就是为什么我失败了,该曲线显示尚未验证其真正的原因是什么?也许我应该问问给我这个证书的同事。

我需要的是从我的OSX中将自签名证书(.p12)复制到我的iPhone/iPad中,然后开发一个应用程序在调用Web API时将其作为凭证读取。

由于每个授权用户都将获得不同的证书,因此我不能将证书放在应用的主包中。

我知道我可以通过应用程序下载证书(可能有一些授权令牌),但由于服务器尚未开发此API,因此我需要在测试我的应用程序时手动复制证书。

有人可以教我如何复制证书,并从我的开发应用程序中读取它。

感谢您的帮助:)

+0

如果这只是为了调试原因,一个临时解决方案,直到API完成,我所理解的,为什么不添加证书文件Xcode项目/包?如果你需要它在实际的设备上,你只需通过电子邮件发送它,在设备上打开它,在iOS设置应用程序中添加并信任它。 – shallowThought

+0

嗨@shallowThought,谢谢你的回复。我确实通过电子邮件发送了它,并将其添加到配置文件中,但正如我所提到的,我无法从应用程序的配置文件中读取证书,您是否对此有其他建议? 我也尝试使用'[NSURLSession dataTaskWithURL:...]'在配置文件中请求带有证书的网页,而没有实现'[URLSession:didReceiveChallenge:...]',它仍然返回错误(Code = 1202“此服务器的证书无效。”) – Griiid

+0

您是否信任该设备? – shallowThought

我只是测试这一点:

  • 创建一个自签名证书。输入密码短语,离开一切空:

    openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365

  • 通过e-mail

  • 打开iOS设备上的电子邮件请发到自己和打开附件cert.pem文件

  • 在打开的设置菜单中,单击install

  • 键入您的设备通过代码

  • 点击确定install

- >结果:受信任的证书:

+0

嗯...我再次尝试,我注意到,我得到的证书是**没有签署**,也许这是我失败的原因和配置文件显示**未验证**的真正原因?也许我应该问问给我这个证书的同事。 – Griiid

+0

这对我有意义。 – shallowThought