macOSのアプリケーション署名の仕組み
ぶっちゃけまだそんなに理解してない。
Androidと似たような感じだということ、標準でコマンドが用意されていて簡単にできることはわかった。
署名は基本的にcodesignコマンドで行える。manページも用意されているのでそれを見たほうが早いかも。
再署名の必要性
文章を書くのが面倒くさいので経緯は箇条書きで...
- Twitterクライアントである夜フクロウが複数GPU搭載のmacにおいて自動切替に対応していない(
Info.plistに対応の記述がない) - そのせいで起動するたびにディスクリートGPUが叩き起こされる
- 驚異的なバッテリー消費
- やばい
- でも夜フクロウ使いたい
-
Info.plist書き換えればいけそう - いけた
- けど署名が無効になっているので暗号化されたファイルを復号化できなくなった
- 起動するたびに再ログインを求められる
- めんどくさい
- 再署名したらいいんじゃね?
夜フクロウのInfo.plistの書き換えによるGPU切替対応(偽装)の方法はブログの方に書きました。
再署名しよう
実際に再署名をしていきます。
署名用の証明書を作る
- キーチェーンアクセス を開きます。
- キーチェーンアクセス > 証明書アシスタント > 証明書を作成をクリックします。
3. 好きな名前をつけ、証明書のタイプで**コード署名**を選択します。
4. 警告されるのでちゃんと意味を理解してから**続ける**をクリックします。
5. 署名用の証明書ができます。
署名する
実際にアプリに署名していきます。
- ターミナル(シェル)を開き、再署名したいアプリケーションのあるディレクトリに移動します。
codesign --force --deep-verify --verbose --sign "<さっきつけた好きな名前>" <アプリケーション>.app
ex) codesign --force --deep-verify --verbose --sign "zeriyoshi-modified-apps" Night\ Owl.app/

3. 完成
その他
- 一度でもそのアプリを使ったことがあるならば、改造をする前にAppCleaner等で設定ファイルもろとも完全に削除した後、一度再起動してからインストール、改造、再署名としたほうが安全
- MBP2016のTouchBarはスクリーンショットの撮影にはすごく便利だと思いました