How to Fix iOS Application Code Signing Error?

私は先週ずっと悪夢だったこの問題を解決しようと試み、長い努力の末に解決することができました。

本当にこの記事で解決する必要があるのでしょうか。
そうかもしれません。

調査中に、あまりにも多くのフォーラム(中国のものを含む、しかし読まない、見るだけ :)、記事、StackOverflow エントリーなどを読みましたが、どれも私を助けることはできませんでした。

開始する前に、私のシナリオは次のとおりです。

私は Cordova アプリケーションを持っており、Cordova CLI を介してビルドを生成します。 しかし、一般に、これはネイティブの ios アプリケーションのビルドと変わりません。 実際、MacOS と XCode のアップデートまでは正常に動作していました。

Mojave と XCode 10 アップデート後、Jenkins 上でビルドが生成できなくなりました。 以下のエラーが連続して表示されました。 これはまさにキーチェーンと証明書に依存する問題です。

..........errSecInternalComponent
Command /usr/bin/codesign failed with exit code 1

私たちは解決策を始めることができます。

Common Solution 1: Check Valid Certificate

Keychain to the valid certificate is correctly added.You should check the keychain to the valid certificate is correctly. キーチェーンアクセスアプリ、またはターミナルから次のコマンドを実行します。

security find-identity -vp codesigning

証明書が結果に含まれている必要があります。

一般的な解決策 2: キーチェーンのロックとロック解除

ここで、もう 1 つの最も一般的な解決策を紹介します。 ターミナルで以下のコマンドを実行します。

security lock-keychain temp.keychain
security unlock-keychain -p p@ssw0rd temp.keychain

この場合、キーチェーン名は「temp」、パスワードは「p@ssw0rd」を使用します。 また、次のコマンドでキーチェーンのフルパスを見つけることができ、キーチェーン名 (temp) の代わりに使用できます。

security list-keychains

共通の解決策 3: マシンを再起動する

おかしな話ですが、ほとんどのウェブサイトでこの解決策が高く評価されています。 新しい証明書を追加した場合、マシンを再起動すると便利です。

sudo reboot

Common Solution 4: Set Keychain Password to Partition List

This solution is fixing password prompt issues.The common solution 4: Set Keychain Password to Partition List

This solution is fixing password prompt issues. いくつかのケースでは、プロンプトからキーチェーンパスワードを待っているコードサインが、リモートアクセスにはこの機能がありません。

security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k p@ssw0rd /Users/ceyhunkeklik/Library/Keychains/temp.keychain-db

「共通の解決策 1」で説明した方法で、キーチェーンのフル パスを見つけることができます。 重複する秘密鍵の確認と削除

私の場合、一時的なキーチェーンには、有効な証明書とその秘密鍵がありました。 なぜかわかりませんが、「システム」キーチェーンには、私の有効な証明書に関連する秘密鍵がありました。 全てのキーチェーンの秘密鍵を確認し、無関係なキーチェーンから重複する鍵を全て削除しました。

これらの重複は、Mojave アップデートのために現れたと思いますが、本当に理由はわかりません。

結論 🙂