ADFSサーバー間の連携設定(3)

シリーズで、2台のADFSサーバーを利用して、ADFSサーバー間でクレームの受け渡しをするための設定についてお話をしています。今回はADFSサーバー間で連携するために必要な証明書の実装について紹介します。

互いのADFSサーバーが使用する証明書を認識する方法

2台のADFSサーバーで連携するときには、それぞれのADFSサーバーで信頼関係を結びますが、信頼関係を結ぶときに使われるフェデレーションメタデータに証明書の情報が含まれていますので、ADFSサーバー間で互いの証明書を認識させるための特別な設定は何も必要ありません。

前回、ADFSサーバー間の信頼関係の設定について行ったけど、フェデレーションメタデータなんて出て来ませんでしたね。ところが、ADFSサーバー間で信頼関係を設定することにより、お互いが持っているフェデレーションメタデータと呼ばれるXMLファイルが交換されるのです。
(フェデレーションメタデータについては機会を改めて、ということで)

話をもとに戻しましょう。
信頼関係を設定するときに、それぞれのADFSサーバーが使用する証明書を認識させるために
特別な設定が必要ないと言いました。
では、証明書だったら何でもよいのか?といえば、そうでもありません。
以下に、具体的な注意事項を記しておきます。

ADFSサーバーが使用する証明書をうまく運用するための注意点

証明書を利用するときには大前提として、相手のADFSサーバーに実装されている証明書を発行するCA(認証局,証明機関)が[信頼されたルート証明機関]に登録されていることがあげられます。Verisignなどの公的なCAから発行された証明書を使っていれば、何も問題はありません。しかし、自社のCAから発行された証明書は[信頼されたルート証明機関]に登録されていなければ、ADFSサーバーではエラーが発生し、連携は失敗します。

その他、証明書の検証に関する問題も注意すべきポイントです。

ADFSによる証明書の検証は、証明機関(認証局)が実在することを確認する証明書チェーンの検証と、CRL に証明書が含まれていないことを確認する検証が行われます。これらの検証はCAサーバー(図の中では証明書サーバーと書いています)に接続して行うため、相手組織のCAサーバーにアクセスしようと思ってもファイアウォールなどによって接続できない場合があります。CAサーバーへのアクセスに失敗すると、検証も失敗するため、ADFSサーバーの連携そのものが失敗に終わります。

この問題を解決するために、主に2つの選択肢があります。
image

次のトピックから証明書検証の失敗を回避するための方法について確認します。

方法1:外部から CRLとAIAの公開ポイントにアクセスできるように構成する

CAサーバーとしてActive Directory 証明書サービスを利用する場合、CRL と AIA の公開ポイントはローカル (C ドライブ)、Web サーバー、ファイルサーバー、LDAP の 4 か所が指定されています。証明書の利用者は、ローカルを除く3か所へのアクセスができないと証明書の検証は行えません。そのため、別組織の証明書利用者が適切に検証できるようにするため、Web サーバーのみを公開ポイントとして設定し、外部からアクセスできる場所にCAサーバーを配置しておくことが解決策として考えられます。

CAサーバーにActive Directory証明書サービスを使っている場合であれば、[証明機関]管理ツールのサーバー名のプロパティからCRLとAIAの場所は設定できます。

方法2:検証を行わないように構成する

既定で有効になっている証明書検証の設定は Set-ADFSClaimsProviderTrustコマンドレットで、SigningCertificateRevocationCheck を ”none” に設定することで無効にできます。

Set-ADFSClaimsProviderTrust `
–SigningCertificateRevocationCheck “none”

これにより証明書検証の問題を解決できますが、適切な証明書であることに対する保証はなくなりますので注意してください。

次回はADFSサーバー間でのクレーム・トークンの受け渡しについて紹介します。