xConnect で使用される証明書についてまとめ

samatsu 9/1/2018 1905 N/A Sitecore XP

Sitecore 9.0 から xConnect サービスを使用して、Sitecore のCM/CDサーバーと xDBの環境の通信が行われるようにアーキテクチャの変更されています。xConnectはデフォルトでセキュアな通信を行うようにセットアップされます。

xConnect はIIS上の独立した1サイトとしてセットアップされます。xConnect と通信する場合、https による通信を行います。なので、サーバー証明書による通信の暗号化が行われます。

さらに、クライアントの認証にはクライアント証明書が使われます。 xConnect と通信するすべてのロール(コンテンツ管理やコンテンツデリバリー、レポーティング、プロセッシング、インデックスサービスやオートメーションのサービスなどはすべてクライアント証明書で認証されます。また、xConnectと連携するカスタムプログラムを実装する際もクライアント証明書で認証を受ける必要があります。

このため、xConnectは、https通信のためのサーバー証明書と、クライアント認証のためのクライアント証明書の2つを最低でも使用します。

今回は、それぞれの証明書がどこにインストールされているのかを確認します。

今回使用した環境

  • Sitecore 9.0 Update-2 シングルインストレーション環境
  • デフォルトのインストールスクリプトでインストール
  • Sitecore インスタンス名 xp902
  • 自己証明書を使った環境

1.ルート証明書

証明書のスナップインを使用して ローカルコンピューターの証明書の信頼された証明書期間を見てみます。ここで、 DO_NOT_TRUST_SItecoreFundamentalsRoot と DO_NOT_TRUST_SItecoreRootCert という証明書がインストールされていることがわかります。 SitecoreFundametalsRootはhttps通信を行うための死サーバー証明書を署名するために使用されているルート証明書です(自己ですが)。 SitecoreRootCertはクライアント証明書を署名するために使用されるルート証明書です。

続いて、 個人ストアの証明書を見ると、xp902のインスタンスでデフォルト設定でインストールした場合は、xp902.xconnect, xp902.xconnect_client という証明書がインストールされています。それぞれ、先ほどのルート証明書を使って証明書が作成されていることがわかります。有効期限は初めてインストールした場合は 1年になっているはずです。

ルート証明書の有効期限が短い場合は、ルート証明書の有効期限と同じになっていると思います。

xp902.xconnect_client を右クリック > すべてのタスク > 秘密キーの管理 をクリックします。SitecoreのウェブサイトとxConnectのウェブサイトのアプリケーションプールのユーザーに対して、証明書の読み取り権限が付与されていることに注意してください。この設定がないと証明書をプログラムから読み取ることができなくなり実行時に証明書が見つからないとうエラーが発生します。

クライアント証明書は SitecoreのウェブサイトフォルダーやxConnectウェブサイトのフォルダーのConnectionStrings.config や AppSettings.config でThumbprint(母音)を使って指定されていることを確認できます。

SIFフレームワークを使って、デフォルトでインストールしている場合は、c:\certificates フォルダーにクライアント証明書用の証明書とクライアント証明書用のルート証明書の crt ファイル(公開キーのみのファイル)も存在しているはずです。カスタムプログラムを作成する場合は、そのプログラムが動作するマシン上でこの証明書をインストールしてプログラミングをしていきます。

また、サーバー証明書はIIS マネージャーで xConnect のサイトでバインドの確認をするとSSL/TLS用の証明書として使用されていることがわかります。

簡単ですが、シングルインストール環境で作成される証明書と使用される場所やファイルを簡単に確認してみました。