43

既存の質問に目を通しましたが、問題を解決したものはありません (証明書の再作成など)。アプリ内に実行可能ファイルとフォルダーとフレームワークがほとんどないアプリを構築しました。私がやろうとするときはいつでも、codesign -s "our identity" my.app常にアイデンティティが見つかりません。誰かがこれの段階的なプロセスを与えることができますか.

codesign -s "Developer ID Application: Sai***** (123123123J)" out/Release/Sai.app

エラー

開発者 ID アプリケーション: Sai***** (123123123J): ID が見つかりません。

「Developer ID Application」とシリアル番号を削除しようとしましたが、すべて同じエラーが発生します

これらの行でヘルプを探しています

4

5 に答える 5

30

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 が動作するようになり、署名済みのアプリケーションが作成されるはずです。

于 2015-09-03T15:34:00.163 に答える
11

答えは最終的に非常に簡単でした。秘密鍵がありませんでした。このために、私は証明書を取り消し、開発者プログラムの手順に従いました (特に、プロセス中に CSR 証明書を作成しましたが、証明書を取り消さない限り、何度も取得できませんでした)。

于 2013-05-21T13:56:56.227 に答える
0

均等に

certtool y | grep "Developer ID Application: xxxx"

結果を表示できませんでした。目的のキーチェーンへのアクセスの問題であると推測しました。したがって、最初に確認したことは、キーチェーン自体の任意のアプリケーションが秘密鍵にアクセスできることでした。次にk=/Users/myUser/Library/Keychains/login.keychain、certtool コマンドでオプションを使用し始めました。これが成功したので、同じことを行いました

codesign --keychain /Users/myUser/Library/Keychains/login.keychain --force --verbose -s "Developer ID Application: xxxx
于 2019-12-14T14:19:04.727 に答える