2013-04-02 36 views
4

我正在嘗試爲Xcode創建自動構建版本。直到現在一切正常。 爲構建從命令行項目我使用這個命令如何從.p12文件獲取分發標識的名稱

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

回答

9

可以使用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它過濾器,只代碼簽名身份,如果你有多個。

+0

嗨斯圖爾特。感謝您的快速回復。這個命令列出了身份,但它列出了所有的,因爲我想從所需的.p12文件獲取該信息,我將如何實現該目標,任何腳本? –

+0

我不知道從.p12文件派生代碼標識的方法。但'security find-identity'確實接受一個OS X Keychain文件作爲一個可選參數,所以不用'.p12'文件就可以創建一個單獨的包含你的密碼私鑰+ cert的鑰匙串,並使用它。 –

+0

所以你的意思是每增加一個新證書我都要創建一個新的鑰匙串來存儲它? –

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

相關問題