私は先週ずっと悪夢だったこの問題を解決しようと試み、長い努力の末に解決することができました。
本当にこの記事で解決する必要があるのでしょうか。
そうかもしれません。
調査中に、あまりにも多くのフォーラム(中国のものを含む、しかし読まない、見るだけ :)、記事、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 アップデートのために現れたと思いますが、本当に理由はわかりません。
結論 🙂