Xcodeコマンド/ usr / bin / codesignが終了コード1で失敗しました:errSecInternalComponent


104

デバイスでアプリをテストするために、新しいプロビジョニングプロファイルをXcodeに追加しようとしています。ここに私が従ったステップがあります:

  1. すべての証明書とプロビジョニングプロファイルを削除しました

  2. IOS Dev証明書の作成/追加

  3. 私のIOSデバイスをオンラインで追加

  4. IOSプロビジョニングプロファイルの作成

  5. IOSプロビジョニングプロファイルの追加

  6. きれいなアプリ

  7. ビルドしてアプリを実行

  8. ビルド設定で共同設計とプロビジョニングプロファイルを設定する

  9. 大量のグーグル>成功しない

ここに私が得るエラーがあります:

CSSM_SignData returned: 800108E6
/Users/alexpelletier/Library/Developer/Xcode/DerivedData/MyExpense-efnqzvoqwngzcmazaotyalepiice/Build/Products/Debug-iphoneos/MyExpense.app:     errSecInternalComponent
Command /usr/bin/codesign failed with exit code 1

1
このエラーは、プロビジョニングプロファイルのセットアップと証明書、およびバンドルIDの不一致が原因です。PP、バンドルID、証明書がで正しく設定され、iTunes Connectとアプリで正しく割り当てられていることを確認します。
Alex Pelletier 2014年

1
私が作成したフレームワークのコード署名中に、Xcode 11.2.1から11.3にこの問題が発生しました。プロビジョニングプロファイルは含まれていません。Mohit Manhasの答えはそれを明確にしました。
Daniel Zhang

これは、SSHを使用していて、コードサインがキーチェーンの秘密鍵へのアクセスを許可されていない場合に発生します。これを確認するには、キーチェーンでキーを見つけ、右クリックして[情報を見る]を選択し、[アクセス制御]に切り替えて、[codesign]アプリが[常にアクセスを許可]のリストにあるかどうかを確認します。このコメントを参照してくださいgithub.com/electron-userland/electron-builder/issues/…私が行ったのは、GUIからスクリプトを1回実行し、[常に許可する]をクリックしてキーアクセスを許可することです。
ArticIceJuice

回答:


239

キーチェーンアクセスを開き、[ファイル ]メニューの[ すべてのキーチェーンをロック ]を選択します。

次に、Xcodeに戻り、クリーンアップして再ビルドします。キーチェーンのロックを解除するために、もう一度パスワードの入力を求められます。

この後、他にコンパイルの問題がないと仮定すると、成功します!


7
このばかげたロックとロック解除が役立つことは信じられない!ありがとう
Josip B.

8
これは受け入れられる答えになるはずです。再起動よりもはるかに健全です!
yonix 2018年

3
私も働いた。Android用のAPKを30秒間作成し、iOS用のアプリを作成します。2時間。
Gabe

1
マジでWTF ?! ありがとう!
Peter N Lewis

1
@FredericP私は最近パスワードを変更しました。したがって、キーチェーンがxcodeによってロック解除された最後の時間と、そのために使用されたパスワードの間には、何らかの相互作用がありました。
sherrellbc

77

コード署名メカニズムのバグのようです。Macを再起動すると問題が解決します


別のケースですが、同様のエラーメッセージ-再起動は機能しました。
mikus

ほぼ4年後、それはまだ動作します!ゴールデンルールを忘れました-「疑問がある場合は、再起動してください!」
アラン

2
より破壊的な解決策を待っている場合は、以下のMohit Manhasの回答を参照してください
yonix 2018年

助けにならなかった
アヌープVaidya

70

これは、ログインキーチェーンがロックされている場合に発生します。ログインキーチェーンのロックを解除するには、次のコマンドを実行します。

security unlock-keychain login.keychain

キーチェーンがパスワードで保護されている-p場合は、オプションを使用してパスワードを指定します。

次に、ビルドまたはコード署名操作を再試行します。問題のエラーコードはAppleのドキュメントに内部エラーとして記述されているため、これが他のケースでも発生する可能性は十分にあります。


1
残念ながら、このソリューションは完全に循環しているように見えます。上記のコマンドを実行するには、パスワードを入力する必要があります。これは、非インタラクティブセッションでは明らかに(JenkinsなどのCIエージェントを介してこれを実行する場合のように)実行できません。
コンラートルドルフ

これは良い点です。あなたが言うように、これはCIボットなどの非インタラクティブセッションには適していません。コマンドラインセッション(sshなど)でリモートビルドを実行する場合に便利です。
cbracken

3
Jenkinsにも同様の問題があり、上記のコマンドで説明したことに加えて、コマンドに引数としてパスワードを渡す必要があったため、「security unlock-keychain -p $ KeychainPassword <login-keychain>」を実行しました。 KeychainPaaswordをJenkinsに安全に簡単に保管できる場所。
Mohit Tater

1
この投稿をありがとうございます。なぜcodesign失敗したのかを理解するために数日間費やしましたが、これが私を救った魔法のコマンドです!!!
Dimu4

32

High Sierra/ Xcode 9.4.1に同じ問題があったため、サインインの試みはすべて終了しましたerrSecInternalComponent

    • キーチェーンアクセスに移動
    • ログインキーチェーンに移動します
    • カテゴリ「マイ証明書」を選択します
    • 署名する証明書を見つけて展開し、鍵を確認します。
    • キーをダブルクリックします
    • [アクセス制御]タブに移動します。
    • キーのアクセス制御を「すべてのアプリケーションにこのアイテムへのアクセスを許可する」に更新します

または:

Mac端末でcodesignコマンドを実行し、「常に許可する」/ usr / bin / codesignによるキーへのアクセス

  1. ssh / CIから署名しようとする場合も実行する必要があります

    security unlock-keychain login.keychain

    App Bundleに署名する前


?あなたは、 『すべてのアプリケーションがこの項目にアクセスすることを許可する「に更新キーのアクセス制御』について詳しく説明することができます私は考えどのようなことにも意味がありません。
ジョン・マックラング

2
@JonMcClungキーチェーンアクセスを開き、ログインキーチェーン-私の証明書に移動します。署名している証明書を見つけて展開し、鍵を確認します。キーをダブルクリックすると、「アクセス制御」タブが表示されます。許可するスイッチがあります
平衡状態

5
security unlock-keychain -p <password> login.keychainCIの@KonradRudolph 。
均衡

1
@KonradRudolphコードサインにプライベートキーへのアクセスを許可した場合、セキュリティロック解除キーチェーンのパスワードを提供する必要はありません。パスワードとして空の文字列を残すだけで十分です。
Kamil Szostakowski

1
@KonradRudolphはまだ理想的ではないかもしれませんが~/.bash_profile、SSHクライアントの起動時にキーチェーンがロック解除されるように、そのロック解除コマンドを移動できますが、CIスクリプトから参照する必要はありません
sschilli

17

同じ問題に遭遇しましたが、macOSを再起動すると動作します。

中国では、開発者の間で格言があります。

小さな問題、再起動するだけです。大きな問題は再インストールする必要があります。

時には、上記のことわざが大いに役立ちます!


7
アメリカでは「古いハードウェアを再起動しない」と言っています
ブラント

@ブラントなぜあなたはこのことわざを持っているのですか?それは面白い。
ifeegoo

冗談ですが、同様の問題があり、最後に古いサーバーを再起動しました。
ブラント

1
@ifeegoo古いサーバーは、起動時に問題が発生する可能性があります(OSが更新された可能性がありますか?誰かが起動スクリプトを壊した可能性があります)。試す前にわからない。たぶん、bios romが悪くなったのでしょう。これは、適切に管理された環境では問題にならないはずのことの1つにすぎませんが、実際に試す前に分からないので、試したくありません。
Lassi Kinnunen

1
@LassiKinnunenそうですね、私たちはAndroidとiOSのモバイル開発者です。そのため、この種の状況はサーバーを気にしません。サーバーは本当に危険です。
ifeegoo 2018

8

それが他の誰かを助ける場合、macOSマシンへのsshセッションで実行していたため、errSecInternalComponentエラーが発生しましcodesignた。macOSマシン自体のターミナルウィンドウから同じコマンドを実行すると機能しました。

これはおそらくcodesign、ログインキーチェーンから秘密鍵にアクセスする必要があるためです。

実行security unlock-keychain login.keychain(で説明したようにcbrackenの答え)同じセッションからも動作するはずです。


これは非常に奇妙です。keychainunlockコマンドを実行しても、コードサインがまだ機能しないため、静かに失敗するようです。ただし、SSHの代わりにリモートデスクトップを使用して同じコマンドを実行しても問題はありません。
最大

2

ssh runコマンドから署名しようとする場合:

security unlock-keychain login.keychain

App Bundleに署名する前

またはUIから

キーのアクセス制御を「すべてのアプリケーションにこのアイテムへのアクセスを許可する」に更新します

@Equilibriumおよび@Jon McClungへのThx


2

私は同じ問題を抱えていました問題はアプリのコード署名にあることがわかりました。

Opened the developer account and accepted the updated agreement and it worked.  

ここに画像の説明を入力してください


2

実行security unlock-keychain login.keychainしたところ、ログインパスワードが機能しませんでした。だから私は再起動し、それから再びXcodeを実行しただけでうまくいきました。コマンドの実行も同様に機能します。奇妙な問題。


2

コメントの1つで@Equilibriumによって指摘されているように、コマンドライン環境にいる場合。Jenkins(私の場合)のように、セキュリティロック解除にパスワードを渡す必要があるかもしれませんように、ソリューションで言及されコマンドに。

使用する代わりに、

security unlock-keychain login.keychain

使用する:

security unlock-keychain -p <login-keychain-password> <path-to-login-keychain>

ログインへのパスキーチェーンは、$ HOME / Library / Keychains / login.keychain(私の場合)または単にlogin.keychainです。


あなたの答えは@equilibriumの答えに基づいていますが、私はそれを想像します。竹CI私は助けたコマンド セキュリティアンロックキーチェーン-p {アカウントパスワード} login.keychain
A.Kant

2

ジェンキンスとsshからこの問題に遭遇した人のために:

キーチェーンの秘密鍵へのアクセスを許可していない可能性が高いため、試してみましたが、なぜこれらすべてが機能しないのかはわかりません。

  1. -Aまたは-T / usr / bin / codesignを使用したセキュリティインポート.p12ファイル
  2. security set-key-partition-list -S apple-tool:、apple:、codesign:-s -k#{password}#{keychainPath}
  3. すべてのプロビジョニングプロファイルを[UUID] .mobileprovisionに変更し、jenkinsサーバーの「〜/ Library / MobileDevice / Provisioning \ Profiles」にコピーします
  4. 派生データを消去してjenkinsサーバーを再起動します
  5. デフォルトのキーチェーンがログインキーチェーンで、ロック解除されていることを確認してください。

最終的に解決される:

1.ssh [user] @ [jenkinsServerIP] -L 5900:localhost:5900、jenkinsサーバーにログイン

2.「vnc:// localhost」を開きます

jenkinsサーバーがこれを許可している場合、これはリモート画面を起動します...

次にkeychain.appを開いて、秘密鍵への/ usr / bin / codesignのアクセスを許可します

幸運を


1

sshセッションからではなく、macターミナルを使用して一度だけ試してください

security unlock-keychain login.keychain

そして、プロンプトされたダイアログで常に許可を選択します。そして、あなたはリモートセッションでxcodebuildできます。


1

キーチェーンでコード署名証明書に関連付けられている秘密鍵を右クリックし、プロンプトに依存する代わりに「すべてのアプリケーションを許可」をクリックすると、sshを介してビルドが行われたため、修正されました。


0

そうしなければならなかった:

1)プロジェクトに関連付けられた証明書を削除します

2)Xcodeに戻り、アプリ証明書を取り消します

3)Xcodeには新しい証明書が必要です

4)すべてのKeyChainをロックする

5)プロジェクトをクリーンアップする

6)再構築

それでおしまい。それが誰にも役立つことを願っています。


0

上記の方法は私には役に立たない。

私はそれを解決しました:

  1. キーチェーンアクセスを開きます。
  2. [ログインメニュー]をクリックします。
  3. すべての個人証明書を削除します。
  4. プロジェクトをクリーンアップします。
  5. 再構築。

それでおしまい。それが誰にも役立つことを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.