前の投稿(と言っても、随分間が空いてしまいましたが..)では、
ADFSで新しく証明書を実装する場合の注意点について紹介しました。
新しく証明書を実装するときは前回の投稿のとおりで設定してもらえれば、それで十分なのですが、
ADFSで既に利用している証明書を「有効期間が切れるから」などの理由で入れ替えをするときに、
前回の投稿のとおりで証明書を入れ替えただけでは下の画面のようにエラーになります。
ADFSをよく御存じの方にとっては、おなじみの画面ですね。
しかし、この画面を見たところで何の解決にもならないので、イベントビューアのADFS 2.0 Adminログを見てみましょう。
イベントビューアでは、イベントID 184のエラーが出ていることが確認できます。
エラーの詳細には「既知の証明書利用者信頼をキーが示していないため、要求を実行できませんでした」
とあります。
エラーの詳細に記載されている「証明書利用者信頼をキーが示していない~」とは
証明書に問題があるよ、と言っています。
このことからわかるように、証明書の入れ替えをするときには単純に証明書を入れ替えただけではダメなのです。
では、どうすればよいか?
答はフェデレーションメタデータにあります。
フェデレーションメタデータとは、ADFSの信頼関係を設定するときに使う、XMLのデータで
このファイルの中には証明書の情報が決め打ちで入っているのです。
(下の図の下から4行目 <X.509Certificate> 部分)
ですので、証明書を入れ替えて新しい証明書を使うことになったならば、
フェデレーションメタデータの情報も変わりますので、ADFS信頼を設定しているアプリケーション側で
Fedutil.exeを実行し直し、新しいフェデレーションメタデータを参照するように設定しなおしてください。
■参考情報-Fedutil.exeとは?
Fedutil.exeとはWindows Identity Foundation SDKに含まれるプログラムで、
アプリケーションが利用するSTSを登録するために使います。
例えば、ASP.NETで作成したWebアプリケーションがある場合、こんな感じで実行します。
1. ASP.NETアプリケーションのWeb.configファイルを指定
2. フェデレーションメタデータの場所を指定 (https://FQDN)まで入力すれば、
後は[場所のテスト]をクリックするだけで、正確な場所を指定してくれます。
3. トークンの暗号化
お好みで使ってください。
4. まとめ
5. 概要
このとき、[毎日WS-Federationメタデータを更新するタスクをスケジュールする]という
チェックボックスがあります。実は、ここでチェックをつけておくと、ADFSサーバーで
証明書が変わった時に新しいフェデレーションメタデータを見に行くようになります。
そもそも、こうしたトラブルが起きないように5.のところで、
定期的に新しいフェデレーションメタデータを受信するように設定しておけばよいのです。