公証を行うことにより、配布した開発者 ID 付きのソフトウェアが Apple によって検証され、不正なコンポーネントが存在しないことが証明されます。Apple の公証ルールと要件については、「配布前の macOS ソフトウェアの正規化」を参照してください。
Apple の公証ルールに合わせて、InDesign 2020 では Hardened Runtime エンタイトルメントが有効になりました。これにより、コードに署名しなくてもサードパーティプラグインを InDesign に読み込めるようになりました。ただし、プラグインの開発者は、web 経由でプラグインのインストーラー(.pkg または .dmg)を配布する必要があります。macOS のゲートウェイにより、公証されていないバイナリが自動的に隔離されるため、プラグインのインストーラーが実行中に失敗します。詳しくは、「InDesign と macOS 10.15(Catalina)を参照してください。 InDesign のプラグインで公証やコードの署名が不要な場合でも、プラグインのインストーラー/バイナリの公証が必要になります。
公証の要件
- Apple 開発者アカウント
- Xcode 10 以降
- アプリケーション固有のパスワード。生成手順は次のとおりです。
証明書生成のプロセス
- 証明書をリクエストします(キーチェーンアクセスメニュー/証明書アシスタント/認証局に証明書を要求)。
- .certSigningRequest ファイルをディスクに保存します。
- Apple Developer ポータルにログインします。
- 「Certificates, Identifiers & Profiles」をクリックします。
- 「Developer ID Application」を選択して、新しい証明書を作成します。
- 手順 1 の .certSigningRequest ファイルをアップロードして、処理を完了します。表示された .cer をダウンロードし、ディスクに保存します。
- 「Developer ID Installer」を選択して手順 4 ~ 6 を繰り返します。
- 手順 1 と同じ .certSigningRequest ファイルをアップロードして、処理を完了します。表示された .cer をダウンロードし、ディスクに保存します。
- 手順 6 と 8 で生成し、ダウンロードした .cer 証明書をダブルクリックして、キーチェーンに読み込みます。
.pkg または .dmg ファイルの公証手順
この例では、SDK から BasicDialog サンプルプラグインを使用します。
# .InDesignPlugin のコードに署名する
codesign --sign "Developer ID Application: <Developer Name>" --verbose=4 --deep --force --strict BasicDialog.InDesignPlugin # コードの署名を検証する
codesign -dv --verbose=4 BasicDialog.InDesignPlugin - # 上記のコードで署名した .InDesignPlugin を package/installer に追加して .pkg または .dmg を作成する
# インストーラー(.dmg、.pkg など)に署名する
productsign --sign "Developer ID Installer: <Developer Name>"./BasicDialog.pkg ./BasicDialogSigned.pkg # コードの署名を検証する
pkgutil --check-signature BasicDialogSigned.pkg # 公証用に送信する
xcrun altool --notarize-app --primary-bundle-id "com.demo.plugin" --username "your-apple-id@xyz.com" --password "xxxx-xxxx-xxxx-xxxx" --file BasicDialogSigned.pkg # 公証ステータスをオンラインで確認する(手順 6 で要求 UID が返されているはずです)
xcrun altool --notarization-info <Request UID> --username "your-apple-id@xyz.com" --password "xxxx-xxxx-xxxx-xxxx" # オフラインで使用するため、公証されたファイルにステープルを作成する
xcrun stapler staple BasicDialogSigned.pkg # ステープルを確認する
stapler validate --verbose BasicDialogSigned.pkg