WatchGuard Firebox の IKEv2 プロファイルを macOS 26 に読み込ませる
別拠点のネットワークに、手元の Mac から入りたくなりました。
別拠点のルーターは WatchGuard Firebox で、こちらに管理権限はありません。
Firebox には Mobile VPN with IKEv2 が設定されていて、接続用のユーザーアカウントを 1 つもらっています。
ところが、受け取った構成プロファイルを macOS 26 に読み込ませると、インストールの段階で失敗しました。
この記事では、その原因と、クライアント側だけで直す方法を書きます。
macOS が IKEv2 プロファイルを拒否する
WatchGuard の IKEv2 では、Firebox の管理者が書き出したファイル一式に .mobileconfig(構成プロファイル)が入っていて、利用者はそれを macOS や iOS に読み込ませます。
受け取ったプロファイルをダブルクリックしてインストールしようとしたところ、macOS 26 は次のエラーだけを出して失敗しました。
"VPN サービス" ペイロードをインストールできませんでした。VPN サービスを作成できませんでした。
GUI はエラーをこの一文に丸めてしまいます。
原因を知るには、インストールを試みた直後にシステムログを直接見ます。
sudo log show --last 5m --info --debug \
--predicate 'process == "mdmclient" OR process == "neagent"'
mdmclient と neagent の行に、丸められる前の理由が出ています。
ログには接続先やユーザー名も含まれるので、人に見せるときは伏せてから渡します。
Failed to save configuration ... because it is invalid:
Invalid integrity algorithm (SHA1-96), valid values are SHA2-256, SHA2-384, and SHA2-512
インストールに失敗した原因は証明書ではなく、IPsec の完全性アルゴリズム(integrity algorithm)でした。
手元の Firebox が書き出したプロファイルは、Child SA(Phase 2)の完全性アルゴリズムに SHA1-96 を指定していました。
macOS 26 では、IKEv2 の構成プロファイルの Child SA に SHA1-96 を指定できなくなり、SHA2-256・SHA2-384・SHA2-512 のいずれかが必要です1。
IKE SA(Phase 1)のほうは SHA2-256 だったので、このプロファイルで macOS 26 に拒否された値は Child SA の SHA1-96 だけでした。
直すには、プロファイルの SHA1-96 を SHA2-256 に書き換えてから読み込ませます。
置換する前に、grep -n SHA1-96 profile.mobileconfig で出現箇所が Child SA の 1 箇所だけであることを確かめておきます。
sed -i.bak 's|<string>SHA1-96</string>|<string>SHA2-256</string>|g' profile.mobileconfig
plutil -lint profile.mobileconfig
plutil -lint で、plist の構文が壊れていないことを確かめます(VPN の設定値の妥当性までは調べません)。
書き換え前の profile.mobileconfig.bak には接続先などの構成情報が入っているので、動作を確かめたら消しておきます。
次に、インストールに失敗した古いプロファイルを「ダウンロード済みのプロファイル」から削除し、書き換えた側を開き直します。
インストールが通れば、システム設定のネットワークに VPN が現れ、ユーザー名とパスワード(EAP-MSCHAPv2)を入れて接続できます。
Firebox 側がセットアップウィザードの既定値のままなら、サーバー側(Firebox)の設定を変える必要はありません。
Mobile VPN with IKEv2 を有効にしたときの既定の Phase 2 proposal は、ESP-AES-SHA1 と ESP-AES256-SHA256 の 2 本です2。
プロファイルの暗号方式(AES-256)はそのままで、Child SA の完全性アルゴリズムだけを SHA2-256 にすれば、2 本目の ESP-AES256-SHA256 と一致します。
Firebox に管理権限がなくても、クライアント側の 1 行の書き換えだけで接続できるのはこのためです。
プロファイルを取り直したときは、まず grep -nE 'SHA1-(96|160)' profile.mobileconfig を実行し、何か出力されたら同じ書き換えをします。