【问题标题】:How to get name of distribution identity from .p12 file如何从 .p12 文件中获取分发标识的名称
【发布时间】:2013-03-23 09:20:27
【问题描述】:

我正在尝试为 Xcode 创建自动构建。 到目前为止,一切正常。 为了从命令行构建项目,我正在使用这个命令

xcodebuild –project {“xcode_project file path”}–target {“target_name”} –sdk iphoneos –
configuration Release clean build CODE_SIGN_IDENTITY={$distribution_signing Identity} 
PROVISIONING_PROFILE={UUID for provisioning profile}

我想动态获取 UUID 和 CODE_SIGN_IDENTITY,

对于 UUID 我正在做的事情

UUID=$(grep "<key>UUID</key>" "$PROVISIONING_PROFILE_PATH" -A 1 --binary-files=text | sed -E -e "/<key>/ d" -e "s/(^.*<string>)//" -e "s/(<.*)//")

上面的脚本代码为我提供了任何配置文件的 UUID。

我一直无法动态获取 CODE_SIGN_IDENTITY。 我知道它的形式类似于iPhone Distribution: Developer name

如何从 .p12 文件中提取 iPhone Distribution: Developer name

【问题讨论】:

    标签: xcode jenkins xcode4.5 xcodebuild


    【解决方案1】:

    您可以使用security find-identity 命令行实用程序列出系统上可用的代码签名身份:

    /usr/bin/security find-identity -v -p codesigning
      1) F188B6FD76D83316FCB2E594940XXXXXXXXXXXXE "Mac App Distribution"
      2) ADDB5E33AC36FEB2CA0F1C3BC71XXXXXXXXXXXXE "iPhone Developer: Stuart M (xxxxx)"
     2 valid identities found
    

    -v 选项将列表限制为仅“有效”身份,-p codesigning 将其过滤为仅协同签名身份,以防您有多个身份。

    【讨论】:

    • 嗨斯图尔特。感谢您的快速回复。此命令确实列出了身份,但它列出了所有身份,并且我想从所需的 .p12 文件中获取该信息,我将如何实现这一点,任何脚本?
    • 我不知道有一种方法可以从 .p12 文件中获取代码签名标识。但是security find-identity 确实接受 OS X 钥匙串文件作为可选参数,因此您可以创建一个单独的钥匙串,而不是 .p12 文件,其中只包含您的代码签名私钥 + 证书,并使用它。
    • 所以你的意思是每添加一个新证书我都必须创建一个新的钥匙串来存储它?
    • 是的,这将是一种解决方案,但是一旦我在我的钥匙串中安装证书并使用security find-identity,它会给我所有已安装证书的列表。现在从他们那里我将如何提取所需证书的名称并在我的xcodebuild 命令中使用。附言会有大量的分发证书
    • 好吧,这就像一个双向过程,我的代码生成器生成 xcode 项目。然后我使用命令行工具来构建和部署 xcode 项目。因为会有很多项目,所以用户可以上传配置文件以及他们的分发证书,使用我签署构建然后创建一个构建以上传到应用商店或用于 OTA 分发。现在我被困在这一点上。我不想硬编码代码符号值。
    【解决方案2】:

    这部分 Python 对我有用。我不需要安装任何额外的东西就可以在 Mac 上运行它。

    # load everything. Probably not the best idea in production...
    from OpenSSL.crypto import *
    
    p12 = load_pkcs12(file("./path/to/your.p12", 'rb').read(), 'YOUR_P12_PASSWORD')
    print(p12.get_friendlyname())
    

    感谢这个答案:Python: reading a pkcs12 certificate with pyOpenSSL.crypto

    【讨论】:

      【解决方案3】:

      对于那些不知道如何运行@Stuart M 中提到的security find-identity 命令的人来说,这里是如何做到的:-

      xcrun security find-identity -v -p codesigning
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-04
        • 2021-09-29
        • 1970-01-01
        • 2019-10-04
        • 2011-03-07
        • 2021-10-31
        • 2015-05-24
        • 2021-05-22
        相关资源
        最近更新 更多