CodeSignエラー:証明書ID「iPhone Developer:XXXX(12345678)」がキーチェーンに複数回表示されます。 codesignツールでは、1つだけが必要です。
そこで、キーチェーンに移動して削除します。しかし、Xcode 4を再起動するたびにこのエラーが発生し、一部のアプリは期限切れの古い証明書をキーチェーンに追加し直しています。なぜ、どのアプリですか?
OK、別の「関連する」質問で答えを見つけました。 Xcode有効期限切れの証明書の問題 Xcode 4の既知の問題 http://openradar.appspot.com/917328
私はちょうど同じ問題を抱えていました。修正されました。アプリを送信し、アプリに署名するための証明書をいくつかインストールした後です。
クイックフィックス:KEYCHAIN ACCESSを開き、[MY CERTIFICATES]をクリックすると、iPhone Developer:が表示されます。おそらく2回表示されます!有効期限が最も早いものを選択し、右クリックして[削除]を選択します。
Xcodeを再起動していない場合は再起動します。今すぐ動作します。 :)
ハッピーコーディング。
単純な削除が機能しない理由がわかったと思います。 dev証明書はまだプロビジョニングプロファイルに保存されているため、キーチェーンで証明書を削除した後にXcodeを閉じたり、再度開いたりすると、古い証明書が戻ってきます。それで再び削除します。動いた。
プロファイルソリューションの単純な削除は機能しませんでした。
私はこの同じ問題に苦労してかなりの時間を費やしました。それを修正するすべての試みの後、私は最終的にそれがXcodeのバグであることを認識するようになりました。この投稿はそれを修正する手がかりを与えてくれました: 証明書がキーチェーンに魔法のように再表示されます
私の場合、一致する秘密鍵はシステムキーチェーンにあり、その上に自分の名前がありました(プロビジョニングのためだとわかりにくい)。そうしなければならなかった:
興味深い観察結果は、証明書を削除しても、関連する秘密キーは削除されないということです。視覚的には、証明書の下に秘密鍵が表示されます。だまされてはいけません。
幸運を!
IOS DeveloperおよびEnterprise iOS Developerプログラムのメンバーであり、両方のアプリケーションに同じ会社名を入力した場合、同じ名前の2つの有効な配布証明書が作成されます。
この質問はその状況に対処するものだと思います: 開発者とエンタープライズ配布の間のCodeSign衝突
Xcode45-DP1でも同じ問題があります。これは私のために働く:
アカウントに関連するすべての証明書をキーチェーンから削除します。 QUITキーチェーン
アカウントに関連するすべてのプロビジョニングプロファイルをxcode:organizer:device:Library:provisioningプロファイルから削除します。 QUIT xcode
証明書を取り消して再生成し、ビルドマシンにダウンロードします
プロビジョニングプロファイルをダウンロードする前に、ダウンロードボタンの横にある編集をクリックして、名前が選択されていることを確認します。
次に、プロビジョニングプロファイルをダウンロードします
証明書をダブルクリックして、キーチェーンにインストールします
プロビジョニングプロファイルをxcode:organizer:device:Library:provisioning profilesにドラッグします
xcodeの更新ボタンをクリックしないでください。
ビルドします。
答えは こちら
オーガナイザーで古い証明書を使用して古いプロビジョニングプロファイルをすべて削除してから、XCodeを終了し、キーチェーンから古い証明書を削除して、XCodeを再起動します。
プロビジョニングプロファイル内の参照がある場合、xcodeは証明書を保持しているように見えます
私の場合、Xcodeが見ていた「キャッシュ」は接続されたiOSデバイスでした。これが問題かどうかを判断するには:
これが根本的な原因である場合は、Xcodeを起動する前にiOSデバイスを切断することで回避できます。
キーチェーンにゾンビ証明書が再入力され、証明書IDが2回表示されるという問題がありました。重複した証明書を削除するだけでは機能しませんでした。
Xcodeでは、ターゲットのコード署名を調べたときに、「リリース」ビルドとは異なる「アドホック」ビルドの配布プロファイルがあったことを思い出しました。
新しい証明書を生成したとき、リリースビルドではなく、アドホックビルド用の新しいプロファイルのみをダウンロードしました。
Xcodeは両方のプロファイルの証明書にぶら下がっていたため、Xcodeは証明書の重複を引き起こしていました...プロファイルを適切に更新するのを忘れていたためです。
すべてのプロビジョニングプロファイルを新しい証明書に更新し、Xcodeですべてのプロファイルを同時に変更してください。
私はこの問題を抱えていて、それに関するすべての情報を読んで、最終的に自分で解決策を見つけました。人々が言及しなかったのは、[〜#〜] before [〜#〜] Xcodeオーガナイザーの証明書のクリーニングと[〜#〜] before [〜#〜]キーチェーンの有効期限が切れたキーを消去するには、有効期限が切れた証明書がProvisioning Portalにないことを確認する必要があります。古い開発者証明書を使用した古いアプリの証明書が1つでもある場合、Xcodeはそれを最初のビルドでオーガナイザーに取り込み、そこからキーチェーンに移動して重複を引き起こします。
冗長な証明書を単に削除する が機能しませんでした。 xcodebuildが呼び出されるたびに、どこかのキャッシュからキーチェーン内の証明書を「再作成」しているようです... avi と同じ問題ファイルがキャッシュされている場所を見つけてクリアしますが、運がありませんでした。最後に、私のために働いたのは(ちょっとしたハックですが、ちょっと、他に何ができますか)、証明書番号が何であるかを把握し、xcodebuildが呼び出された直後にキーチェーンから手動で削除することでした。まず、/ usr/bin /ディレクトリ(またはxcodebuildファイルがあるディレクトリに移動します。which xcodebuild
)次のコマンドを実行します。
Sudo mv xcodebuild xcodebuild_actual
次に、次のコードを使用して、お気に入りのエディター(Sudoを忘れないでください)を使用してファイルを作成します。
xcodebuild_actual $* &
echo "xcodebuild started, waiting to wipe certificate, 10 seconds"
sleep 2
echo "Wiping Certificate..."
Sudo security -v delete-certificate -t -Z 407629F811D52C0BB7AD31BBB18DCB496354B05E
注:パスワードを入力せずにこの特定のコマンドを実行するには、sudoersファイルを変更する必要があります。
上記の-Zの後の16進IDを、問題のあるゾンビ証明書の16進IDに置き換えます。最後に、xcodebuildファイルが実行可能であることを確認します。
Sudo chmod 755 xcodebuild
キーチェーンを開いてビルドコマンドを実行し、問題のあるゾンビ証明書がどのように復活し、コード署名の問題になる前に即座にショットガンされるかを確認できます。うまくいけばAppleはこれに対する本当の修正を思い付くでしょう。
不要になった証明書のキーチェーンの秘密キーの1つを削除しました。
証明書は再作成されますが、秘密キーは再表示されません。有効な証明書を確認すると、1つの証明書のみが表示され、秘密キーが削除された他の証明書は有効な証明書の下に表示されなくなります。
これがこの問題を解決する最も簡単な方法だと思います。
私は一度同じ問題に対処していました。そして、Xcodeの[オーガナイザー]タブから未使用のプロビジョニングプロファイルを削除することで解決しました。実際、キーチェーンはこのプロビジョニングプロファイルから証明書を取得します。このプロファイルは、有効期限が切れた証明書か、無効な証明書によるビルドです。
したがって、このプロビジョニングプロファイルを[オーガナイザー]タブから削除するだけです。オーガナイザーはxcodeの右上のボタンにあり、オーガナイザーで使用していないプロビジョニングプロファイルを削除します。
これがスクリーンショットです、
また、キーチェーンから余分な証明書を削除することを忘れないでください。その後、それらの証明書は再び表示されません。
私の場合、証明書の削除は機能しませんでした。 XCode 4はそれらをキャッシュまたは復元するようです。最終的に私のために働いたトリックは、キーチェーンとXcodeを実行することでした。次に、キーチェーンで2つの証明書(dev + dist)を「ログイン」から「システム」にドラッグします。その後、複製が魔法のように再表示され、それらを削除することができ、証明書を「ログイン」にドラッグして戻しました
正しい証明書をデスクトップにエクスポートするのはとても簡単です。キーチェーン内のその証明書を削除します。エラーメッセージでソースをビルドしてみてください(証明書がありません。)その後、証明書を再度インポートします。 =>成功!