2011-12-16 6 views
10

特定のキーチェーンをオンに切り替えて別のキーチェーンを閉じようとしています。 私たちの企業の&アプリストアIDは同じものと呼ばれているので、これが必要です。CLI:xcodebuildに署名するためにキーチェーンを切り替えます。

今、私は正しい鍵チェーンを開き、使用しないことを望むキーチェーンに「セキュリティロックキーチェーン」を行うために、「セキュリティのデフォルトキーチェーン」に続いて「セキュリティロック解除キーチェーン」を実行します。

しかしxcodebuildは両方のキーチェーンのエントリを見て、あきらめます。

iPhone Distribution: Company name.: ambiguous (matches "iPhone Distribution: Company name." in /Users/user/Library/Keychains/login.keychain and "iPhone Distribution: Company name" in /Users/user/Library/Keychains/enterprise.keychain) 

私がロックしているキーチェーンのエントリをシステムが見つけられないようにするにはどうすればよいですか?

答えて

3

ソリューション: 私はすべてのappstore関連のものをログインキーチェーンに入れ、エンタープライズ用のものは別個のキーチェーンファイルに入れました。 Xcodeのバージョン6以下用

# 1. Only activate the System and either the Appstore(=login) or Enterprise keychain. 
security list-keychains -s $KEYCHAIN_NAME $SYSTEM_KEYCHAIN 

# 2. Loop through App Schema's 
for APP_SCHEME in ${APP_SCHEMES[@]}; do 
    echo "--= Processing $APP_SCHEME =--" 
    xcodebuild -scheme "${APP_SCHEME}" archive 
done ### Looping through App Schema's 

# 3. Restore login & system keychains 
security list-keychains -s $APPSTORE_KEYCHAIN $ENTERPRISE_KEYCHAIN $SYSTEM_KEYCHAIN 
+0

しかし、並列ビルドの場合、タスクが誤ったキーチェーンを同時に切り替える可能性がある場合、これは望ましくない可能性があります。私は依然としてPackageApplicationスクリプトの方が、証明書の検索に優先キーチェーンを設定するオプションを取る方が好きです。 – lef

0

別の解決策::SHA1ではなく、(あいまいな)名前で証明書を指定し、次のようにbuildscriptで

は、私はそれらの間で切り替えます。 "男の協調設計" から:

If identity consists of exactly forty hexadecimal digits, it is instead 
interpreted as the SHA-1 hash of the certificate part of the desired iden- 
tity. In this case, the identity's subject name is not considered. 

そして、 "セキュリティのヘルプ検索-証明書" から

-Z Print SHA-1 hash of the certificate 

残念ながら、この方法は、あなたが言うことができdeprecated in Xcode 7

+0

有望な音...しかし、私はxcodeでSHA1をどのように指定できるか分かりません。私はおそらくスクリプトで署名をしなければならないでしょう。とにかく、ヒントのおかげで。それが私たちを助けることができるかどうかを知るために、私はこのことを知っていきます。 – P5ycH0

+1

@ P5ych0申し訳ありません、今までこれを見ていませんでした。はい、私たちは "xcrun -sdk iphoneos PackageApplication --sign --embed "のようにスクリプトで署名します。 –

+0

しかし、PackageApplicationスクリプトで見ることができるように、--signパラメータをチェックするスニペットがあります"iPhone Distribution"にマッチするので、このバグスクリプトがハッキングされていない限り、SHA-1を使用するのは実現不可能です。 – lef

9

されているPackageSignスクリプトを、使用する必要が使用するキーチェーン:

xcodebuild "OTHER_CODE_SIGN_FLAGS=--keychain '$PATH_TO_KEYCHAIN'" 

また、01に電話すると直接:

codesign --keychain "$PATH_TO_KEYCHAIN" 

PackageApplicationを使用する場合、これを設定する方法はありません。しかし、PackageApplicationは非常に簡単なスクリプトであり、必要に応じて再実装することができます(大規模なシステム/スクリプトと統合する場合は非常に便利です)。

+0

音がクールです。私はそれを試してみましょう。指定したキーチェーンをキーチェーンアプリケーションにロードする必要があるか、またはファイルシステム上に十分に存在するかどうかを確認します。 – P5ycH0

+0

キーチェーンをキーチェーンアプリケーションに追加する必要はないとは思いますが、わかりません。 –

関連する問題