【发布时间】:2014-01-14 14:46:07
【问题描述】:
我需要以编程方式从用于签署 iOS 应用程序的证书中获取数据(公钥)。有谁知道这是否可能?有一些API吗?看起来 MacOS 有多种解决方案,但没有一个适合 iOS。
【问题讨论】:
-
你不能从 Apple Developer Portal 复制公钥/私钥,正如答案所说:stackoverflow.com/a/6708011/1515075
标签: ios certificate
我需要以编程方式从用于签署 iOS 应用程序的证书中获取数据(公钥)。有谁知道这是否可能?有一些API吗?看起来 MacOS 有多种解决方案,但没有一个适合 iOS。
【问题讨论】:
标签: ios certificate
尝试以下步骤:
.ipa)。为此,您只需使用存档实用程序即可。.app)embedded.mobileprovision。您将在 PropertyList 的 DeveloperCertificates 内的 <data> 元素中找到签名证书密钥(或证书,如果您使用了多个)
security cms -D -i embedded.mobileprovision
另外,如果要提取公钥并直接保存到文件中,在终端中执行以下操作:
如果您尚未安装 Homebrew,请下载并安装它:
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go/install)"
安装 XMLStarlet 或任何其他帮助我们解析 plist 内容的工具:
brew 安装 xmlstarlet
和之前一样,我们使用security cms 命令来解码embedded.mobileprovision 配置文件,但这次我们直接将其提供给XMLStarlet(xml 命令)来解析DeveloperCertificates 元素,其中包含公钥。我们使用 openssl 读取它并将其写入一个文件,我们称之为publickey.pem:
security cms -D -i embedded.mobileprovision | xml sel -t -v "/plist/dict/key[. = 'DeveloperCertificates']/following-sibling::array[1]/data[1]" | awk '{打印 $1}' | sed '/^$/d' | base64 -D | openssl x509 -inform der > publickey.pem
您可以在文件publickey.pem中找到公钥
【讨论】:
如果您想从应用程序内部检查证书,那么在 iOS 上是不可能的。主要原因之一是应用程序已被 Apple 辞职。
iOS 应用程序比 Mac OS 上的应用程序更加沙盒化。
【讨论】: