macos:codesign
文書の過去の版を表示しています。
sign & notarize
electronで作成した自作の野良アプリにコード署名・公証を行う。署名と公証がなくてもビルドしたマシンでは問題なく起動できるが、他のMacで起動するのに必要になる。
前提
- Apple Developer Programに加入していること(有料)
署名用の証明書を準備
- xcodeを起動して、settings... を選択
- Accountsを選択、左下の+をクリックして Apple IDを追加
- Teamを選択(Roleがadminのものを選択)し、Manage Certificate... をクリック
- 左下の + から
Developer ID Application
を選択するとコード署名用の証明書が作成され、keychainに追加される
app-specific passwords(App用パスワード)の取得
- Apple IDサイトにログイン (https://appleid.apple.com/account/manage)
- 「サインインとセキュリティ」を選択
- 「アプリ用パスワード」を選択
- アプリ名を入力して「作成」する
Apple Developerのサイトではなく、非開発者向けのApple IDサイトで取得するので間違わないように
Team IDを確認
- Apple Developerにログイン(https://developer.apple.com/account)
- 「メンバーシップの詳細」に移動
- チームIDを確認
ビルドと署名、公証を行う
electron forge, electron builderなどのツールがあるが、ここでは最もシンプルなelectron packagerを使う
electron-packagerとdotenvをインストール
npm install --save-dev @electron/packager dotenv
build.jsを作成
const packager = require('@electron/packager'); const dotenv = require('dotenv'); dotenv.config(); packager({ out: 'dist', dir: '.', overwrite: true, executableName: 'MyApp', appBundleId: process.env.APP_BUNDLE_ID, platform: 'darwin', arch: 'arm64', osxSign: {}, osxNotarize: { appleId: process.env.APPLE_ID, appleIdPassword: process.env.APPLE_ID_PASSWORD, teamId: process.env.APPLE_TEAM_ID, } });
.envファイルを作成(これをgitにコミットしないように)
APP_BUNDLE_ID='バンドルID、一般的にはドメイン逆順+アプリ名、例 moe.nullpon.MyAppName' APPLE_ID='自分のApple ID' APPLE_ID_PASSWORD='App用パスワード (Apple IDのパスワードではない)' APPLE_TEAM_ID='チームID'
実行
node build.js
これでビルド、署名、公証まで行われる。
packagerは内部でcodesignコマンドを呼んでいるようで、コマンドが証明書にアクセスする時にログインパスワードを入力する必要がある。これは1度ではなく何回も発生するので、常に許可をしてしまった方がいいかも
署名の確認
codesign -dvvv MyApp.app
公証の確認(以下のコマンドでacceptedと出ればOK)
spctl -avvv MyApp.app
macos/codesign.1702222596.txt.gz · 最終更新: 2023/12/10 15:36 by nullpon