Sougen Blog

WatchGuard Firebox の IKEv2 プロファイルを macOS 26 に読み込ませる

vpnikev2watchguardmacos

別拠点のネットワークに、手元の 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 を実行し、何か出力されたら同じ書き換えをします。


  1. Apple の Device Management の仕様で、ChildSecurityAssociationParameters の IntegrityAlgorithm に SHA1-96 と SHA1-160 は macOS 26 以降で使えないとされています。 ↩︎

  2. WatchGuard の IKEv2 セットアップウィザードを実行すると、Phase 2 proposal として ESP-AES-SHA1 と ESP-AES256-SHA256 が既定で入り、PFS は無効になります。管理者が proposal を変えていれば、この限りではありません。 ↩︎