ユーザ用ツール

サイト用ツール


macos:codesign

sign & notarize

ここではelectronで作成した自作の野良アプリにコード署名・公証を行う手順を記述する。署名と公証がなくてもビルドしたマシンでは問題なく起動できるが、他のMacで起動するのに必要になる。

前提

  • Macを所有していること
  • Apple Developer Programに加入していること(有料)

署名用の証明書を準備

  1. xcodeを起動して、settings... を選択
  2. Accountsを選択、左下の+をクリックして Apple IDを追加
  3. Teamを選択(Roleがadminのものを選択)し、Manage Certificate... をクリック
  4. 左下の + から Developer ID Applicationを選択するとコード署名用の証明書が作成され、keychainに追加される

AdminロールのTeamを選択しないとDeveloper ID Applicationが出てこないかも・・・

app-specific passwords(App用パスワード)の取得

  1. Apple IDサイトにログイン (https://appleid.apple.com/account/manage)
  2. 「サインインとセキュリティ」を選択
  3. 「アプリ用パスワード」を選択
  4. アプリ名を入力して「作成」する

Apple Developerのサイトではなく、非開発者向けのApple IDサイトで取得するので間違わないように

Team IDを確認

  1. Apple Developerにログイン(https://developer.apple.com/account)
  2. 「メンバーシップの詳細」に移動
  3. チーム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.txt · 最終更新: 2024/06/25 00:48 by nullpon