4

codesign「指定された要件を満たしていない」ため、完全に検証できないアプリがあります。最初のチェックでは「ディスク上で有効」が返されるので、問題ありません。

codesign -dvvvv -r- PATH_TO_APP要件を教えてくれました。それは次のとおりです。

Identifier=com.foobar.BarBuz-Helper
[...]
designated => anchor apple generic and identifier "com.foobar” and
  (certificate leaf[field.1.2.840.113635.100.6.1.9] /* exists */ or 
  certificate 1[field.1.2.840.113635.100.6.2.6] /* exists */ and 
  certificate leaf[field.1.2.840.113635.100.6.1.13] /* exists */ and 
  certificate leaf[subject.OU] = XXXXXXXXXX)

正しいように見えます。ただし、アプリの識別子が実際には「com.foobar」ではなく「com.foobar.BarBuz-Helper」であることを除いて、私の意見では、それが要件を満たしていない理由です。

Xcode は、間違った識別子でアプリに署名します。それが実行される Xcode コマンドです。

CodeSign /Users/matthias/[…]-Helper
    setenv CODESIGN_ALLOCATE /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate
    Using code signing identity "Developer ID Application: Matthias Bauch"
    /usr/bin/codesign --force --sign 0123456789 --requirements =designated\ =>\ anchor\ apple\ generic\ \ and\ identifier\ \"com.foobar\"\ and\ ((cert\ leaf[field.1.2.840.113635.100.6.1.9]\ exists)\ or\ (\ certificate\ 1[field.1.2.840.113635.100.6.2.6]\ exists\ and\ certificate\ leaf[field.1.2.840.113635.100.6.1.13]\ exists\ \ and\ certificate\ leaf[subject.OU]\ =\ \"XXXXXXXXXX\"\ )) /Users/matthias/[...]-Helper

なぜこれが起こるのか分かりません。

ここで何がうまくいかなかったのか誰か知っていますか?アプリは指定されたコード署名要件をどこから取得しますか? アプリの識別子が DR の識別子と一致しないのはなぜですか?

すべての plist とビルド設定を確認しましたが、これが発生する場所が見つかりません。

4

1 に答える 1

6

Designated Requirements の識別子は、アプリの Info.plist に由来することがわかりました。

このアプリはコマンド ライン アプリであるため、デフォルトでは info.plist はありません。このヘルパーを SMJobBless で実行したかったので、info.plist を作成し-sectcreate、plist を (リンカーに) アプリに埋め込みました。

私がしなかったのは、Packaging Build Settings で「Info.plist File」を設定することでした。Info.plist を正しく指定すると、codesign でアプリを検証できます。

于 2013-11-17T10:49:14.050 に答える