macOS Sierra で codesign してネットワーク通信時のダイアログを抑制する術 を参考にして 同様にやってみたら Mojave でも Catalina でも同様だったので、全体をスクリーンショットを取りつつまとめてみました。
動作確認環境
- macOS Mojave 10.14.6
証明書作成
キーチェーンアクセスから「証明書を作成」を開きます。
適当な名前を入力して、証明書のタイプを「コード署名」にします。 コード署名専用にするために「デフォルトを無効化」にチェックをいれておきます。 ここで入力した名前は後で RUBY_CODESIGN
環境変数に設定する名前になります。
注意書きが出てくるので「続ける」をクリックします。
有効期間がデフォルトでは 365 日なので、例えば 3650 などに伸ばしても良いようです。 medium の記事に書いてあるように最大は 7300 のようで、 Mojave でも同じでした。
次の画面でメールアドレスが入っていても、消してしまっても構いません。 他はデフォルトのまま証明書の保管場所まで進んでいきます。
証明書の保管場所を「システム」に変更します。
後ろに仕上げ中と出た状態で認証を要求されます。 (スクリーンショットは後ろ側だけになってしまいました。)
認証が通ると証明書が作成されます。
完了を押すとまた認証を要求されます。
システムキーチェーンの証明書に入っているのを確認します。
「情報を見る」を開きます。
「信頼」を開いて「コード署名」を「常に信頼」にします。 閉じる時に Touch ID で変更を許可します。
証明書の横の三角形でツリーを開いて、下にある秘密鍵の「情報を見る」を開きます。
「アクセス制御」で許可します。 閉じる時に Touch ID で許可しても、なぜかさらにパスワードを要求されるようです。
最後のアクセス制御はできれば ruby のビルドプロセスからのみにしたいところですが、 同様のコマンドを実行すれば使えてしまうので、意味のある制限は難しそうです。
シェル側の設定
.bashrc
に export RUBY_CODESIGN=ruby-codesign-2020
を追加するなどの方法で環境変数を設定します。
rm miniruby; make miniruby
などのビルド時に認証のダイアログが出なくて、 テスト実行中にネットワークの許可も出なければ設定完了です。