回答我的问题,我希望这可以帮助别人。
事实证明,mobileprovision
文件是一个PKCS7数字签名的邮件。它没有与开发人员的证书签署,但与苹果的证书。
不过,如果是签名的数据是包含您用来登入您的二进制文件证书的公钥的XML的plist。
所以基本上,步骤如下:
- 从PKCS7文件中提取数据。
- 从p12文件中提取公钥。
- 比较两者,并检查它们是否相同。
我设法使用Ruby轻松完成这项工作,因为它为OpenSSL提供了很好的包装。我留下了一个script in Github,如果有人想使用。
代码的相关部分如下:
profile = File.read(@profile_file)
certificate = File.read(@certificate_file)
p7 = OpenSSL::PKCS7.new(profile)
cert = OpenSSL::PKCS12.new(certificate, @certificate_password)
store = OpenSSL::X509::Store.new
p7.verify([], store)
plist = REXML::Document.new(p7.data)
plist.elements.each('/plist/dict/key') do |ele|
if ele.text == "DeveloperCertificates"
keys = ele.next_element
key = keys.get_elements('//array/data')[0].text
profile_cert = "-----BEGIN CERTIFICATE-----" + key.gsub(/\t/, "") + "-----END CERTIFICATE-----\n"
@provisioning_cert = OpenSSL::X509::Certificate.new(profile_cert)
end
end
# Compare @provisioning_cert.to_s and cert.certificate.to_s
来源
2011-07-21 20:16:51
pgb
这可以帮助,但它不正是我要找的。我认为配置文件只是用证书签名。如果我们只能找到应用的签名,并验证签名身份,那就太棒了。 – pgb
第一个链接现在已经死了 - 这里是它的存档版本。 https://web.archive.org/web/20130502092617/http://idevblog.info/mobileprovision-files-structure-and-reading – Stevko