ADFSで証明書を入れ替えるときの注意点(1)

If you’re having trouble setting up ADFS, it’s either a problem with PKI or a typo.
(ADFSのセットアップでトラブルが起きたなら、PKIまたは入力ミスが問題の原因だ)

というのは、マイクロソフトのあるエンジニアの言葉ですが、
私はADFSの特徴をよく表した言葉だと思っています。
ADFSは
設定項目の多さから入力ミスが起きたり、
設定すべき証明書の項目の多さから証明書の実装ミスが起きたりします。

こうしたトラブルに見舞われた時、何よりも頼りになるのがイベントビューアです。

今回はADFSで証明書を入れ替えたときに起きたトラブルを紹介します。
ADFSは、インストール直後に自己署名証明書が実装されているので、
現実の運用では認証局から発行された証明書を入れることが一般的だと思います。

このときに、ADFSの管理ツールの[サービス]-[証明書]から証明書を入れ替えることだけを行うと、

133-0

ADFSサービスを再起動したときに、ADFS2.0-AdminログにイベントID133というエラーが出力されます。

133-1

そして、イベントID 133にはこのように書いてあります。
一部を抜粋しましょう。

フェデレーション サービス構成の処理中に、要素 ‘serviceIdentityToken’ に 無効なデータがあることがわかりました。構成されている証明書の 秘密キーにアクセスできませんでした。証明書の値は次のとおりです:<中略>この構成要素が修正されるまで、フェデレーション サービスを 開始できません。

指定したストアで証明書が見つかったものの、証明書の秘密キーへの アクセスに問題がある場合、この状態が発生する可能性があります。 この状態の一般的な原因を、次に示します:
(1) .cer ファイルや .p7b ファイルなど、秘密キーを含まないソースから 証明書がインストールされた。
(2) 証明書の秘密キーが、.pfx ファイルなどから、 上で指定したストアとは異なるストア内にインポートされた。
(3) “コンピューター キー” オプションを指定していない証明書要求の一部として、 証明書が生成された。
(4) フェデレーション サービス ID ‘NT AUTHORITYNETWORK SERVICE’ に、証明書の秘密キーへの読み取りアクセス権が 付与されていない。

ユーザー操作
秘密キーのないソースから証明書がインポートされた場合は、 秘密キーのある証明書を選択するか、.pfx ファイルなど、 秘密キーを含むソースから証明書をインポートし直して ください。

証明書がユーザー コンテキストでインポートされた場合は、上で指定したストアが、 証明書のインポート先のストアと一致していることを確認してください。

“コンピューター キー” オプションを指定していない証明書要求により 証明書が生成され、キーがエクスポート可能とマークされている場合は、 秘密キーのある証明書をユーザー ストアから .pfx ファイルにエクスポートし、 構成ファイルで指定されているストア内に直接インポートし直してください。 キーがエクスポート可能とマークされていない場合は、”コンピューター キー” オプションを 使用して、新しい証明書を要求してください。

フェデレーション サービス ID に、証明書の秘密キーの読み取り アクセス権が付与されていない場合は、証明書スナップインを使用して、 この状態を修正してください。

(4)に注目してください。「ADFSサービスのサービスアカウントから証明書の秘密キーにアクセスできない」
と書いてあります。証明書を入れ替えたときには、同時に証明書の秘密キーにサービスアカウントが
アクセスできるよう、アクセス許可を変更してください。

証明書の秘密キーへのアクセス許可は、
MMC-スナップインの追加と削除-証明書(コンピューターアカウント)
証明書(ローカルコンピューター)-個人-証明書
からADFSで入れ替えた証明書を右クリックし、[すべてのタスク]-[秘密キーの管理]で設定できます。

133-2

アクセス許可は、サービスアカウントに対して[読み取り]以上のアクセス許可があれば、
証明書の入れ替えには成功し、イベントID 133のエラーも出なくなります。

ADFSのトラブルシューティングを行うためには、こうした対処療法でトラブル解決に導けるものもあれば、
仕組みを理解しないとなかなか難しいものもあります。
ADFSの仕組みやケース別の実装方法などについては、筆者が登壇している
「ADFS2.0によるIDフェデレーションの実装」コースで、豊富なラボ環境と共に実践しますので、
ご興味があれば、参加してみてください。