【问题标题】:Copy a p12 certificate from OSX which will used by an app when calling web API从 OSX 复制 p12 证书,应用程序在调用 Web API 时将使用该证书
【发布时间】:2017-10-22 00:05:53
【问题描述】:

我在 stackoverflow 上阅读了this question,所以我知道我无法从应用程序的配置文件中读取已安装的认证。

这是我尝试过的:

  1. 通过 AirDrop 从我的 macbook 复制自签名的证书 (.p12)。
  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.",这与我在安装证书之前遇到的错误相同。

更新:我又试了一次,发现我得到的证书是未签名,也许这就是我失败的真正原因,并且个人资料显示未验证?也许我应该问我的同事谁给我这个证书。

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

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

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

谁能教我如何复制证书并从我的开发应用程序中读取它。

感谢您的帮助:)

【问题讨论】:

  • 如果这只是出于调试原因的临时解决方案,直到 API 完成,我怎么理解,为什么不将证书文件添加到 Xcode 项目/捆绑包中?如果您需要它在实际设备上,您只需通过电子邮件发送它,在设备上打开它,在 iOS 设置应用程序中添加并信任它。
  • 嗨@shallowThought,感谢您的回复。我确实通过电子邮件发送并添加到配置文件中,但正如我所提到的,我无法从应用程序中读取配置文件中的证书,您对此还有其他建议吗?我也尝试使用[NSURLSession dataTaskWithURL: ...]在配置文件中请求带有证书的网页,没有实现[URLSession: didReceiveChallenge: ...],它仍然返回错误(代码=-1202“此服务器的证书无效。”)
  • 您在设备上信任它吗?
  • 是的,我安装了它,我可以在我的Settings->General->Profiles & Device Management 中看到它。我使用空投从我的 macbook 复制证书。
  • 安装后,您还必须明确信任它。它比说“受信任”并且(我认为)有一个绿色复选标记。可能用新信息更新您的问题(添加/信任的内容、方式、确切的代码为您提供了哪些确切的错误)。

标签: ios ssl certificate p12


【解决方案1】:

我刚刚测试了这个:

  • 创建自签名证书。输入密码短语并将其他所有内容留空:

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

  • 通过电子邮件发送给自己

  • 在iOS设备上打开邮件并打开附件cert.pem文件

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

  • 输入您的设备密码

  • 点击install确认。

-> 结果:可信证书:

【讨论】:

  • hmm...我又试了一次,发现我得到的证书是未签名的,也许这就是我失败的真正原因,配置文件显示未验证?也许我应该问问我的同事谁给我这个证书。
  • 这对我来说很有意义。
猜你喜欢
  • 2016-10-17
  • 1970-01-01
  • 2018-11-16
  • 2013-11-05
  • 2012-01-08
  • 1970-01-01
  • 2022-10-21
  • 2023-04-07
相关资源
最近更新 更多