栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

验证证书和配置文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

验证证书和配置文件

回答我自己的问题,希望对您有所帮助。

原来,该

mobileprovision
文件是PKCS7数字签名的消息。它不是用开发人员的证书签名的,而是用苹果公司的证书签名的。

但是,签名的数据是一个XML plist,其中包含用于签署二进制文件的证书的公钥。

因此,基本上,步骤如下:

  1. 从PKCS7文件中提取数据。
  2. 从p12文件中提取公钥。
  3. 比较两者,并检查它们是否相同。

我设法使用Ruby轻松做到这一点,因为它为OpenSSL提供了不错的包装器。如果有人要使用的话,我在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.newp7.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)  endend# Compare @provisioning_cert.to_s and cert.certificate.to_s


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/616566.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号