回答我的問題,我希望這可以幫助別人。
事實證明,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