当前位置: 首页 > 面试题库 >

验证证书和配置文件

昝卓
2023-03-14
问题内容

在我们的iOS项目中,我们将用于生成AdHoc和AppStore构建的签名证书和供应配置文件都提交给版本控制存储库。这样,每当新开发人员下载该应用程序的新副本时,他就拥有了为测试人员创建AdHoc构建所需的一切。

我们正在使用Jenkins进行持续集成,我希望有一个脚本可以对提交的文件进行完整性检查。特别是,我想检查提交的配置文件是否确实是使用在存储库中提交的签名证书生成的。

有谁知道如何从命令行执行此操作?我无法弄清楚.mobileprovision文件格式,尽管它似乎是签名的二进制plist文件。


问题答案:

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

原来,该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.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


 类似资料:
  • 问题内容: 问题已经解决了这里,但没有工作,我(不相同的弹簧引导版本我猜)本 尝试编写自定义约束验证器代码,以在保留之前检查帐户电子邮件是否存在。 // ------------------------------------------------ -------------------------- // --------------------------------------------

  • 问题已经在这里解决了,但对我不起作用(我猜不是同一个Spring启动版本) 尝试编写自定义约束验证器,在持久化之前检查帐户电子邮件是否存在。 // -------------------------------------------------------------------------- // ------------------------------------------------

  • 我想实现一个功能--使用k8s JSON schema/yaml schema验证Kubernetes部署文件(部署yaml或服务yaml或rc yaml)。 目前,我需要设置kubectl和k8s集群可用,以便验证。但是如果没有这个设置,希望使用Go-Client(K8s)API进行验证。 谁能告诉我是否有任何库,我可以用来验证文件?我如何获得K8s模式。是否有生成模式的工具/库?你能给我指明方

  • 我对使用证书和安全性是一个新手,所以请原谅我,如果这对其他人来说是一个不需要考虑的问题。我遵循了本指南,将Grails应用程序设置为使用自签名证书在HTTPS上运行。 我试图与运行在同一台机器上的另一个HTTPS网络(一个Nifi独立实例)建立双向SSL。我可以让Nifi实例通过HTTPS与Grails对话,但Grails与Nifi对话(特别是与ListenHTTP处理器对话)时遇到了问题。 当我

  • 问题内容: 我试图分几个步骤处理X509证书,并遇到了两个问题。我是JCE的新手,所以我还没有完全了解最新信息。 我们希望能够基于不同的编码(PEM,DER和PCKS7)解析几个不同的X509证书。我已经使用FireFox 从https://belgium.be以PEM和PCKS7格式导出了相同的证书(证书包括链)。我已经省略了几行不需要的问题 只要我使用FileInputStream而不是PCK

  • 主要内容:1 Tomcat生成SSL证书,2 使用SSL证书1 Tomcat生成SSL证书 运行以下命令以生成证书: 在Windows上: 在Linux上: 该工具将询问一些问题以提供证书。证书将位于文件夹中,证书名称为"tomcat"。您可以使用以下方法检查证书: 在Windows上: 在Linux上: 2 使用SSL证书 编辑文件: 在Windows上: 在Linux上: 并添加一个SSL连接器。 重新启动Tomcat,您就完成了。现在,您可以在Tom