Dynamics CRM 2011では、IFD展開を構成してみました。そのときのメモを5回にわたって記載します。各記事で次のことを記載します。

  1. CRM2011でHTTPSを使用するようにバインディングの修正とクレーム認証/IFD展開用のDNSの準備
  2. ADFS2.0のセットアップと構成
  3. CRM2011サーバー側でのクレーム認証のセットアップ
  4. ADFS2.0サーバー側での証明書利用者信頼(Relying Party Trust)のセットアップ
  5. IFD展開の設定

クレーム認証およびIFD展開の構成の設定については、次のURLでのドキュメントを参考にしています。

Microsoft Dynamics CRM 2011 Implementation GuideのMicrosoft Dynamics CRM 2011 and Claims-based Authentication.doc
http://www.microsoft.com/download/en/details.aspx?id=3621
Dynamics CRM 2011 クレームベース認証構成のポイント
http://blogs.msdn.com/b/crmjapan/archive/2011/12/14/dynamics-crm-2011-claim-authentication-tips.aspx

動作確認環境は次の通り

  • Windows Server 2008 R2上に構築した Dynamics CRM 2011 UR 5 オールインワン環境
  • Windows Server 2008 R2上にADFS 2.0 をセットアップ
  • SSL証明書は自己署名のワイルドカード証明書(サブジェクト名=*.dcrm.local)を使用する。CRMとADFSのSSL証明書として使用。

CRMのサーバーとADFS2.0サーバーは同じ環境にセットアップできます。今回ADFSサーバーを別のサーバーで構築したのは、普段使っている CRMの環境がIISの既定のサイトにセットアップしていたためです。ADFS2.0はIISの既定のサイト(ポートに80, 443を使用) に構築されるため、今回は別のサーバーにADFS2.0をインストールしました。

今回の作業は CRMサーバー上で行います。DNSの設定は、DNSサービスが動作しているサーバーまたは、リモートのクライアントからスナップインを起動して実施します。

1.IFD展開の構成完成図

先が長いので、完成した画面を先に掲載します。IFD展開の構成が完了すると、ログインしたい組織のCRMのURLにアクセスすると、リダイレクトされ、ADFSのサインイン画面でユーザの資格情報を入力するようになります。

ログインが成功すると、下図のようにIFDのURL(組織名がURLの先頭にくる)でCRMの画面が表示されます。OnPremiseの場合と異なり、画面右上にサインアウト画面が表示されます。

2.HTTPSバインディングの設定

Dynamics CRM Webアプリケーションにアクセスするときに https を使用するようにバインディングの設定をします。CRMサーバーにログインし、展開マネージャーを起動します。操作ペインのクレームベース認証の構成をクリックすると、下図のように "クレームベース認証を構成するには、すべての Web アドレス設定で、 https を使用する必要があります。この値は、展開のプロパティページを使用して設定できます。" というエラーダイアログが表示されます。

指示に従って、httpsを使用するように設定を行います。操作ペインのプロパティをクリックします。

Microsoft Dynamics CRMのプロパティ画面が表示されます。Web アドレスタブをクリックします。バインディングの種類で、 HTTPS を選択します。次ぐに、 各サーバーとサービスのアドレスを 使用する SSL証明書のサブジェクト名(今回は *.dcrm.local) に対して有効となる値に変更します。下図では、httpsを使用するため、ポートを 443, アドレスを <サーバー名>.dcrm.local としています。OnPremiseで、バインディングにHTTPを使用している場合は、 <サーバー名>:80 になっていると思います。変更したら OK ボタンをクリックします。

展開マネージャーで バインディングを https に変更した後、IISでHTTPSのバインディングを使用するように設定する必要があります。httpsで使用するSSL証明書は信頼された証明機関(CA)から発行された証明書を使用することが推奨されますが、今回は自己証明書を作成します。そのため、いくつか余分なステップが必要になります。 Visual Studio 2010 のコマンドプロンプトを管理者として起動します。次のようにコマンドを入力します。

makecert -r -pe -n "CN=*.dcrm.local" -b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12

ワイルドカード証明書を作成するために、サブジェクト名を CN=*.dcrm.local としています。細かいオプションについては、Makecert.exe (証明書作成ツール)を参照してください。

CRMアプリケーションをホストしているアプリケーションプールのユーザ(今回の例では CrmAppSvc) に対して、作成した自己証明書の秘密鍵の読み取り権限を付与します。アプリケーションプールのユーザが、既定の Network Service の場合は、権限があるので、本ステップは不要のはずです。

ファイル名を指定して実行で、 mmc と入力し、スナップインの画面を表示します。ファイルメニューのスナップインの追加と削除をクリックします。

スナップインの追加と削除画面が表示されます。利用できるスナップインで、 証明書を選択し、追加ボタンをクリックします。

管理する証明書で、 コンピューター アカウントを選択します。次へボタンをクリックします。

コンピューターの選択ダイアログが表示されます。ローカルコンピューターを選択して、完了ボタンをクリックします。

スナップインとの追加と削除画面に戻ります。OKボタンをクリックします。

左ペインで、証明書→個人→証明書を選択します。中央の証明書の一覧に作成した自己証明書が表示されます。

証明書(*.dcrm.local) を右クリック→すべてのタスク→秘密キーの管理 をクリックします。

アクセス許可のダイアログが表示されます。追加ボタンをクリックして、 CRMのアプリケーションプールのユーザに対して 読み取りの権限を付与します。OKボタンをクリックします。

読み取り権限の設定が完了しました。

今回使用する自己証明書は、信頼された証明機関から発行されたものではありません。そのため、作成した証明書を信頼されたルート証明機関にも登録します。信頼された証明機関に発行された証明書を使用している場合は、今回の手順は不要のはずです。個人ストアに保存されている自己証明書を右クリック→すべてのタスク→エクスポートをクリックします。

証明書のエクスポート ウィザード画面が表示されます。次へボタンをクリックします。

秘密キーのエクスポート画面が表示されます。今回作成した自己証明書はワイルドカード証明書であり、ADFS2.0サーバーのSSL証明書としても使用します。そのため、 はい、秘密キーをエクスポートしますを選択します。次へボタンをクリックします。

エクスポートファイルの形式では既定のまま、次へボタンをクリックします。

パスワード画面で、パスワードを入力します。次へボタンをクリックします。

エクスポートするファイル画面で、エクスポート先を指定して次へボタンをクリックします。

証明書のエクスポート ウィザードの完了画面が表示されます。完了ボタンをクリックします。正しくエクスポートされました。というダイアログが表示されます。

エクスポートは以上です。エクスポートしたpfxファイルはADFS2.0サーバーでも使用します。

続いて、エクスポートした証明書を 信頼されたルート証明機関にインポートします。 使用する証明書が自己証明書のために必要な手順となります。証明書スナップインの信頼されたルート証明機関→証明書を右クリックします。コンテキストメニューの すべてのタスク → インポート をクリックします。

証明書のインポート ウィザードの開始画面が表示されます。次へボタンをクリックします。

インポートする証明書ファイル画面が表示されます。ファイル名欄に先ほどエクスポートしたファイルを設定します。次へボタンをクリックします。

パスワード画面で、エクスポート時に指定したパスワードを指定して、次へボタンをクリックします。

証明書ストア画面で既定値(信頼されたルート証明機関)のまま、次へボタンをクリックします。

証明書のインポート ウィザードの完了画面が表示されます。完了ボタンをクリックします。正しくインポートされました。メッセージが表示されます。

今回証明書をエクスポートしてインポートしましたが、コマンドラインツール makecert, cert2spc, Pvk2pfx あたりを調べていただくとエクスポートをせずにpfxの作成が行えるみたいです。

以上で、 IISで HTTPSのバインドを設定する準備が整いました。

IISマネージャーを起動します。接続ペインで、Dynamics CRM がインストールされているサイトを選択します。操作ペインでバインドを選択します。

サイト バインド画面が表示れます。追加ボタンをクリックします。

種類に https を選択しますポートは既定値443 を使用します。ADFS と共存している場合は、444などに変更する必要があります。SSL証明書は先ほど作成した 自己証明書を選択します。OKボタンをクリックします。

サイトバインドでhttpsが登録されていることを確認できます。閉じるボタンをクリックします。

以上で https バインドを使用するIISとCRMの設定が完了しました。https接続での動作確認をしてみます。

3.動作確認

https通信を行うようにする設定は完了たので、実際にCRMの組織にアクセスしてみます。展開マネージャーの組織を選択し、表示された任意の組織を右クリックします。コンテキストメニューで参照を選択します。

資格情報を入力するプロンプト画面が表示されます。IEの既定の設定では、FQDNでサーバーを指定した場合は、自動でログインしているユーザーの資格情報を送信しないため想定通りの動作です。資格情報を入力してOKボタンをクリックします。

下図のように、スキームがhttpsで、CRMアプリケーションの画面が表示されます。

動作の確認を行ったので、最後にIFD展開とクレームベース認証ように DNSの設定をします。

4.DNSの設定

今後の作業を進めるためにDNSに下表のCNAMEレコードを追加しました。各自の環境に合わせてIFD構成用のDNSレコードの登録をしてください。冒頭で紹介したMicrosoft Dynamics CRM 2011 and Claims-based Authentication.doc では、さらに詳細なDNSレコードの設定(ディスカバリサービス用にdevレコードを追加するなど)と説明が記載されています。

名前 説明
sts ADFS2.0サーバの名前。ADFS2.0サーバーのCNAMEとして作成。
auth

Microsoft Dynamics CRM IFD フェデレーションエンドポイントのURL。
ADFS2.0サーバーが Microsoft Dynamics CRM IFD federationmetadata.xml を取得するときにも使用される。
CRMサーバーのCNAMEとして作成。

dyn dynは組織名。IFD構成の時に 組織のURL dyn.dcrm.local でアクセスするために使用。CRMサーバーのCNAMEとして作成。

説明は以上です。

次回は、 ADFS 2.0 のインストールと構成を行います。[Dynamics CRM 2011]IFD展開を構成する その2 ADFS2.0のインストールと構成 を参照してください。