Apple 開発コードの署名にはこれを行いませんでしたが、このような問題のデバッグに役立つ貴重な情報が内部にあると思います。違いは、Apple から取得した証明書を私が独自に作成したことです。
証明書の信頼を確認します。コード署名に対して信頼されている必要があります (キーチェーン アクセスの証明書ビューの信頼セクションで最後から 3 番目にあるヨセミテで)。コード署名の証明書はログイン キーチェーンにある必要があることに注意してください。システム キーチェーンに必要でした。
最初は、キーチェーンへのコード署名について証明書が知られていませんでした。これは、拡張目的の「コード署名」が欠落していたためです。キーチェーンを調べて証明書をダブルクリックすると、これを見つけることができます。
私はそれを修正しました(Appleが証明書を提供するため、修正できません。拡張機能はそこにあるはずです):
次に、証明書をキーチェーンからデスクトップにドラッグ アンド ドロップした後、信頼できる署名証明書に証明書を追加しました。
$ sudo security add-trusted-cert -d -r trustRoot -p codeSign -k /Library/Keychains/System.keychain ~/Desktop/gdb-cert.cer
いくつかのインターネットの投稿に誤解され、man ページを見ていないため、これは少し注意が必要でした。add-trust ( https://llvm.org/svn/llvm-project/lldb/trunk/docs/code-signing.txt )を使用する必要があると言う人もいました。ひどい点は、コマンドは成功したものの、本来あるべきことを実行しなかったことです。
その後、次のように信頼できる証明書で新しい証明書を見つけました。
$ security find-identity -p codesigning
Policy: Code Signing
Matching identities
1) E7419032D4..... "Mac Developer: FirstName LastName (K2Q869SWUE)" (CSSMERR_TP_CERT_EXPIRED)
2) ACD43B6... "gdb-cert"
2 identities found
Valid identities only
1) ACD43... "gdb-cert"
1 valid identities found
私の場合、Apple 証明書は期限切れですが、gdb に署名するために使用していたものは期限切れではありませんでした (まあ、自分で作成しただけです)。また、「security add-trusted-cert」(-p codeSign) と「security find-identity」コマンド (-p codesigning) では、ポリシーの名前が異なることに注意してください。それから私は gdb に署名し続けました。
$ codesign --sign gdb-cert.cer --keychain ~/Library/Keychains/login.keychain `which gdb`
gdb-cert.cer: no identity found
証明書ファイルのファイル名を --sign オプションに指定する必要があるという印象を受けましたが、実際には、それは提供する必要があり、信頼ストアにあるはずの証明書の CN でした。キーチェーンの証明書をダブルクリックすると、ここで CN を見つけることができます。
または、上記の「security find-identity -p codesigning」の出力。それから私は署名を続け、それに正しいキーチェーンを渡さなければなりませんでした。あなたの場合、これは ~/Library/Keychains/login.keychain、私の場合は System.keychain でなければなりません:
codesign -s gdb-cert --keychain /Library/Keychains/System.keychain `which gdb`
これで gdb が動作するようになり、署名済みのアプリケーションが作成されるはずです。