問題タブ [osx-gatekeeper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3403 参照

macos - OS X ゲートキーパー/コードデザイン: 署名が無効です

私はトリッキーな問題に直面しています。誰かが以前に似たような問題に遭遇したことを願っています。

OS X アプリ (アプリ バンドル、Yosemite 10.10.2 でテスト) を作成し、このバンドルの一部としていくつかのヘルパー サブ アプリを使用しました。これらのサブアプリは、独自のアプリ バンドルに格納されます。

構造は次のとおりです。

などなど。これはすべてうまく機能し、まったく問題ありません。

この問題は、開発/アドホック/Mac App Store 展開の準備のためにアプリをサンドボックス化/共同設計するときに発生し始めます。

次のコマンドを使用して、アプリバンドル (+ サブコンポーネント) に署名しています

繰り返しますが、うまくいきます。署名済みアプリが起動し、正常に動作します。すべての機能が動作しており、バグ/クラッシュ/目に見えるエラーはありません。サンドボックス化されていない/共同設計されたアプリに似ています。すべてがサンドボックスで実行されます。何時間もアプリを使用できますが、問題ありません。

ただし、アプリをしばらく閉じると (たとえば、15 ~ 30 分、かなりランダムです)、サブアプリの1 つで署名が無効であるというエラーが表示されます (メイン バンドルはそれらをサブ プロセスとして生成します)。

数分後にアプリを再起動しても、すべてが機能します。10 回中 9 回は、アプリを再コンパイルして再び機能させる必要があります。ただし、時折、ランダムに再び機能し始めます。

このアプリの AdHoc ビルドを無関係の Yosemite デバイスに展開すると、同じことが起こりますが、次の amfid エラー コードが表示されます: 0xfffefa2a

これを引き起こしている可能性のあるアイデアはありますか?私が間違っていることがあるに違いありません!

0 投票する
1 に答える
142 参照

macos - OSX Gatekeeper がアプリケーションを停止している

1 つのライブラリとサブプロジェクト (どちらも私が作成したもの) を追加する前に、私のアプリケーションはうまく機能していました。すべて同じ値で署名されたコードです。

(ビルド スクリプトを使用して) ローカル DMG を作成すると、自分のシステムと他のシステムにインストールされます。しかし、Anthill pro から取得したビルドは OSX Gatekeeper を通過できず、「開発者が識別されていません」という問題が発生します。

同じ DMG の動作が異なる原因は何ですか?

0 投票する
1 に答える
25 参照

macos - 署名済みアプリ内にデータを保存

私は OS X アプリケーションを個々の USB に配布しています。このため、すべて自己完結型でなければなりません。

アプリ自体で、ユーザーは情報を入力し、この情報を既存のテキスト ファイル (具体的には ObjectDB データベース) に保存できます。ここに私の問題があります。

このテキスト ファイルをアプリ自体の内部 (つまり、 Contentフォルダーの内部)に保持したいので、邪魔にならず、平均的なユーザーが削除することはできません。しかし、アプリが署名されると、Gatekeeper によってフラグが立てられない限り、テキスト ファイルを新しい情報で変更することはできないようです。これは本当にそうですか?アプリ内にデータファイルを保存する方法はありませんか?

提案をいただければ幸いです。ありがとう。

0 投票する
5 に答える
5034 参照

xcode - Xcode 外での Mac アプリのデジタル署名の失敗

私はQt5でMacアプリを開発しているので、Xcodeの外です。「開発者の身元を確認できないため、開くことができません」という警告を発行するのではなく、GateKeeper がクライアントのコンピューターでアプリを実行できるようにしたいと考えています。

アプリのデジタル署名に成功しましたが、GateKeeper にはまだこの苦情が付きものです。私は Apple 開発者証明書 (私はチーム エージェントです) を持っていますが、キーチェーンはそれが有効であると言っています。また、2 つの Apple ルート証明書もインストールしました。

コマンド ライン ユーティリティを使用してcodesign、アプリ フォルダー内のすべてのバイナリにデジタル署名し、さらにアプリ フォルダー自体にもデジタル署名します。いずれの場合も、codesign の応答は有益であり、エラーは表示されません。codesign を使用すると、実際にすべてのバイナリが署名され、実行されていることを確認できます

は、すべてのバイナリが検証済みであることを示しています。さらに、次のように報告します。

MyApp.app: ディスク上で有効
MyApp.app: その指定要件を満たす

ランニング:

与える

Executable=/Users/xxx/trunk/yyy/deploy/release/MyApp.app/Contents/MacOS/MyApp
Identifier=aaaa.MyApp
Format=Mach-O Thin (x86_64)
CodeDirectory のバンドル v=20200 size=12461 flags=0x0 (なし) hashes=616+3 location=embedded
Hash type=sha1 size=20
CDHash=d1c12c783dac0e8d9a2b749fb896b11558cec8b6
Signature size=8532
Authority=Developer ID Application: XXXXXX
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=29 jul. 2015 12;04:40
Info.plist エントリ = 8
TeamIdentifier = YYYYY
封印されたリソース バージョン = 2 ルール = 12 ファイル = 10
内部要件数 = 1 サイズ = 180

これは問題ないようです。

ランニング

すべてのバイナリで結果として得られる

MyApp.app: 承認された
source=Developer ID
origin=Developer ID アプリケーション: XXXX

これもOKのようです

アプリまたはアプリ フォルダー内のバイナリに対して、XCode コマンド ライン ツールの check-signature を実行します。

結果として与える

(c) 2014 Apple Inc. 無断複写・転載を禁じます。
はい

いずれの場合も、これは望ましい結果です。

しかし、GateKeeper はまだアプリを受け入れておらず、開発者を確認できないという事実について不満を述べています。

[2015 年 7 月 17 日金曜日に著者が追加]

私は問題を見つけたと思います。それが機能なのかOSXのバグなのかはわかりません。stackoverflow question 19551298に大いに助けられました。

ファイルがインターネットからダウンロードされるたびに、それに関連付けられた拡張ファイル属性 com.apple.quarantine が取得されます。このダウンロードしたファイルを Finder でダブルクリックすると、GateKeeper には次の 2 つの可能性があります。

  1. ファイルが署名されていない場合、「不明な開発者など」というメッセージが表示されます

  2. ファイルがデジタル署名されると、「開発者を確認できませんなど」というメッセージが表示されます

どちらの場合も、MessageBox には 1 つのボタン ([OK] ボタン) しかありません。このボタンをクリックしても、MessageBox が閉じる以外は何も起こりません。

拡張属性が削除された場合 (xattr -d)、アプリケーションは署名されているかどうかにかかわらず実行されます。

アプリの Finder でマウスを右クリックしてアプリケーションを起動し、[開く] メニュー アクションをクリックすると、動作が異なります。再び 2 つのメッセージ ボックスの 1 つが表示されますが、ユーザーがアプリを開くためのボタンが追加されています。ここでも、署名されている場合と署名されていない場合の唯一の違いは、「未確認」または「確認されていません」というメッセージです。私の顧客が違いを語れるとは思っていません。その結果、アプリに署名することは無益な練習になります。

Apple サポート ドキュメントに基づいて、ダウンロードしたアプリをダブルクリックしたときの GateKeeper の別のより良い動作を期待しました (ドキュメントが古くなっているか、読み間違えている可能性があります)。

  1. アプリが署名されている場合、GateKeeper は「インターネットなどからダウンロードしました」というメッセージ ボックスと、「続行しますか?」というボタンを表示する必要があります。

  2. アプリが 1 つの [OK] ボタンと「不明な開発者など」というテキストを含む MessageBox に署名されていない場合。

0 投票する
0 に答える
165 参照

xcode - 重複した XPC サービスにより、ゲートキーパーの開発者 ID アプリケーションが中断される

私は、開発者 ID 署名を使用して、Mac App Store の外で Mac アプリケーションを配布することに取り組んでいます。以前は問題なく動作していましたが、前回のビルドでは何かが明らかに変更されたため、サーバーからのダウンロード後に Gatekeeper がアプリケーションを開いたときに拒否されました。

本番用の「開発者 ID アプリケーション」証明書を使用しています。私が知る限り、Mac App Store 以外でのアプリケーションの配布の指示に忠実に従いました。

紛らわしい部分は、ゲートキーパーの適合性をテストするために推奨される次のコマンドがすべて正常に実行され、何も問題がないことを示していることです。Xcode オーガナイザーでの検証も問題なくパスします。

前回のビルドから変更された点の 1 つは、コードの一部が新しいフレームワークにリファクタリングされたことです。

アップデート:

コミット履歴のバイナリ検索と適切な量の試行錯誤により、問題を 1 つのコミットに切り分け、新しい「ファイルのコピー」フェーズをメイン アプリケーションに追加して、XPC サービスを適切な場所に移動しました。XPC サービスは、すでにログイン項目ヘルパー アプリケーションにコピーされていました。メイン アプリケーションのビルド フェーズを削除すると問題は解決しますが、残念ながら、メイン アプリケーションが正しく機能するためには XPC サービスが必要になるため、このフェーズを単純に削除することは現実的な解決策ではありません。

0 投票する
0 に答える
1611 参照

macos - codesign では .app バンドルは問題ないと表示されますが、ゲートキーパーは文句を言います

.appバンドルをゲートキーパーでうまくプレイするのに問題があります。`codesign で検証を実行すると、動作するように見えます:

しかし、Finder で開こうとすると、ゲートキーパーは検証に失敗し (注: これは OSX 10.11 で発生しますが、OSX 10.11 では問題なく動作します。以下の編集を参照してください)、「開発者の身元を確認できません。」「?」codesignゲートキーパー ポップアップの ボタンをクリックすると、「アプリが変更されたか破損しています」というタイトルのヘルプ ページに移動しますが、アプリケーションの検証を依頼するときに、このことを教えてもらうべきだったと思いました。Juno.app は一般公開されているので、必要に応じて見ることができますが、同じ証明書を使用して同じコンピューターで署名された小さなアプリケーションが正常に動作し、非常によく似た出力が得られます。

その 2 番目のバンドルJulia-0.4.2.app もダウンロード可能ですJuno.app署名の慣行を変更できるように、ケースで何が問題になっているのかを理解する方法はありますか?

編集: 以下の l'L'l の質問に対処するために、署名プロセスはこのスクリプトJuno.appによって実行されます。キー行は 28 行目です。

.app には、既に署名されている可能性のある他のリソース ( Junoは IDE 組み込みを含むJuliaのディストリビューションであるためJulia-0.4.2.app、のコンテンツなど) が含まれているため、フラグを に追加します。-fcodesign

EDIT 2 : l'L'l はspctl、問題をドリルダウンするために使用することを提案しました。これにより、次の結果が得られました。

Juno.appこれにより、おそらくいずれか、またはその組み込みフレームワークの 1 つが古いバージョン 1 の封印されたリソース エンベロープをまだ持っている可能性があると思いましたが、ネストされた各リソースを個別に調べると、すべてがバージョン 2 エンベロープを持っていることがわかります。

さらに興味深いことに、この .app は OSX 10.10 では動作しますが、OSX 10.11 では動作しないようです。

0 投票する
1 に答える
219 参照

cocoa - コンソール レコード "... kernel[0]: AppName[a number] Unable to quarantine: 1" とはどういう意味ですか?

最近、Cocoa アプリの 1 つをサンドボックス化しようとしています。

アプリのコンソールのタイトルのように情報を取得し続けることを除いて、他のことは問題ありません。

ファイルの読み取り/書き込み操作の瞬間にレコードが表示されるようです。しかし、それらの操作はすべて成功しました。

この記録は何を意味するのでしょうか。無視してもいいですか?

0 投票する
1 に答える
1174 参照

macos - productsign を使用して OSX で APP インストーラーに署名する方法は?

Apple からインストーラー証明書を取得しました。私のインストーラーはカスタム APP (pkg などではありません) です。今私が走れば

それはちょうどこれを言います:

バグか何かだと思いましたが、APPファイルが気に入らないだけかもしれません。何か案は?

0 投票する
0 に答える
158 参照

macos - リモートサーバーにアップロードした後、Mac アプリケーションの署名に失敗しました

こんにちは、Qt を使用するアプリケーションに取り組んでいます。

数か月間 Qt 5.4 を使用していましたが、最新バージョン (5.6) に移行することにしました。それ以前は、Mac アプリケーションの署名に問題はありませんでした。macdeployqtバイナリを実行してアプリケーションを展開し、スクリプトを実行してパッケージ全体に署名し、それを .dmg に追加しました。

Qt 5.6 に移行したため、署名プロセスでエラーがスローされず、USB キーを使用して他のコンピューターでパッケージを試してみると、署名は問題なく、アプリケーションを問題なく起動できます。

しかし、アプリをインターネット (Dropbox、Slack、または個人のリモート サーバー) にアップロードすると、署名が壊れており、このメッセージが表示されます。

実行するcodesign --deep --verify --verbose=4 -dspctl --verbose=4 --assess --type execute、アップロード/ダウンロードの前後に同じ出力が得られます!

パッケージに署名するために使用するスクリプトは次のとおりです。

この問題の原因について考えている人、または同じ問題に直面している人はいますか? 前もって感謝します。