Microsoft Windows Server 2008 R2: 証明書が RDS のセキュリティを強化する (第 2 部)

証明書を使用することは、リモート デスクトップ サービスの通信をセキュリティで保護するうえで重要です。この記事では、各サーバーに証明書をインストールする方法についての説明を完結します。

Kristin Griffin

証明書は、リモート デスクトップ サービス (RDS) の展開で重要な役割を担っています。証明書は、クライアントとサーバー間の通信をセキュリティで保護し、接続先のサーバーや Web サイトの ID を確認し、リモート デスクトップ プロトコル (RDP) ファイルに署名して、あなたが信頼されたソースに属していることを証明します。

証明書は、すべての RDS の役割サービスで使用する必要があります。この記事では、ローカル ツールまたはグループ ポリシーを使用して各役割サーバーに証明書をインストールするために必要な情報を提供します。まず、RD 構成ツールのプロトコル リスナーのプロパティ ダイアログ ボックスの [全般] タブで、RD セッション ホストのサーバーごとの接続のセキュリティ設定を構成する必要があります。この設定にアクセスするには、[管理ツール]、[リモート デスクトップ サービス]、[リモート デスクトップ セッション ホストの構成] を順にクリックし、中央ペインの [接続] セクションで [RDP-Tcp] をダブルクリックします。ここは、サーバーの SSL 証明書を追加する場所でもあります。

これらの設定は、サーバーごとに構成できます。また、グループ ポリシーを使用して構成することもできます。グループ ポリシーを使用する場合は、[コンピューターの構成]、[ポリシー]、[管理用テンプレート]、[Windows コンポーネント]、[リモート デスクトップ サービス]、[リモート デスクトップ セッション ホスト] を順に展開し、次のグループ ポリシー オブジェクト (GPO) の設定を RD セッション ホスト サーバーの組織単位 (OU) に適用します。

  • セキュリティ: クライアント接続の暗号化レベルを設定する
  • セキュリティ: リモート (RDP) 接続に特定のセキュリティ レイヤーの使用を必要とする
  • セキュリティ: サーバー認証証明書テンプレート
  • セキュリティ: リモート接続にネットワーク レベル認証を使用したユーザー認証を必要とする

ネットワーク レベル認証

既定では、ネットワーク レベル認証 (NLA) の使用は義務付けられていません。NLA の使用を RD セッション ホスト サーバーへの接続の条件とするには、適切なチェック ボックスをオンにします。この設定により、NLA をサポートしないクライアント (つまり、RDC 6.x 以前を実行しているクライアントと Credential Security Support Provider (CredSSP) をサポートしていない OS を実行しているクライアント) はサーバーに接続できなくなります。CredSSP は、Windows 7、Windows Vista、および Windows XP SP3 を実行しているクライアントでのみサポートされています。

サーバー認証

[セキュリティ層] でサーバー認証の設定を構成します。既定値は [ネゴシエート] です。この設定では、サポートされている場合、クライアントとサーバーの両方でサーバーの認証にトランスポート層セキュリティ (TLS) を使用します。

この設定を編集して、サーバー認証に TLS を使用することを強制できます。リモート デスクトップ クライアントの [詳細設定] タブの設定では、次のいずれかをサーバーを認証できない場合のクライアントの動作として指定できます。

  • 認証が失敗した場合は接続しない
  • 認証が失敗した場合は警告する
  • 認証が失敗した場合でも常に接続する

ダイアログ ボックスの下部にある [選択] ボタンをクリックして、サーバー自身の認証に使用する証明書を指定できます。[選択] をクリックすると、証明書の詳細情報 (証明書の目的、証明機関 (CA) の名前、有効期限) が表示されます。

証明書には、RD セッション ホスト サーバーの DNS 名が含まれている必要があります。DNS 名は、rdsh1.domain.local のようなものになります。サーバー ファームを実装している場合、証明書には、RD セッション ホスト サーバー ファームの DNS 名 (farm.domain.local など) が含まれている必要があります。

既定では、RD セッション ホスト サーバーは、自己署名証明書を使用するように設定されています。自己署名証明書は、次の 3 つの理由から、運用環境で使用するのには適していません。

  • 証明書の信頼性が検証されていません。
  • 証明書は、信頼された第三者 (公的 CA、社内の PKI ソリューションなど) によって署名されていないため、クライアントに信頼されていません。
  • ファームを実装している場合、既定の証明書に含まれている名前が RD セッション ホスト サーバー ファームの名前と一致しないため、サーバー ID の検証でエラーになります。

プールされた VM と個人用 VM

プールされた仮想マシン (VM) と個人用 VM には、RD 接続マネージャーを使用して、RD 接続ブローカーに SSL 証明書をインストールすることで署名できます (図 1 参照)。

RD 接続マネージャーを使用してプールされた VM または個人用 VM に署名できる

図 1 RD 接続マネージャーを使用してプールされた VM または個人用 VM に署名できる

RemoteApp に署名する

RD セッション ホスト サーバーの RemoteApp マネージャーにインストールされた証明書を使用して RemoteApp に署名します (図 2 参照)。

RemoteApp マネージャーにインストールされた証明書を使用して RemoteApp に署名できる

図 2 RemoteApp マネージャーにインストールされた証明書を使用して RemoteApp に署名できる

RD セッション ホスト サーバー ファームをセットアップしている場合は、すべてのファームの全 RD セッション ホスト サーバーに同じ証明書をインストールする必要があります。このようにすると、Web シングル サインオン (SSO) が、すべてのファーム メンバーとすべてのファームで機能するようになります。

この構成を実現するには、1 台のサーバーから証明書を (プライベート キーを含めて) エクスポートし、Microsoft 管理コンソール (MMC) の証明書スナップインを使用して、エクスポートした証明書を他のサーバーにインポートします。この際、ユーザー アカウントではなく、サーバー アカウントを追加します。

RD Web アクセスに Web SSO を実装し、RD Web アクセスのソースに RD 接続ブローカーを使用している場合、すべての RD セッション ホスト サーバーと同様に RD 接続ブローカーにも同じ証明書 (RemoteApp の署名に使用する証明書) をインストールする必要があります。これは次の 2 つの理由から混乱を招くことがあります。

  1. RD 接続ブローカーで証明書をインストールするセクションには "仮想デスクトップ: リソースと構成" という名前が付けられていますが、これが誤解を招きます。ここでインストールする証明書は、仮想デスクトップ インフラストラクチャ (VDI) の VM の署名に使用するだけでなく、RD 接続ブローカーが関連している場合には、Web SSO プロセスで RemoteApp の署名にも使用します。RD 接続ブローカーと RD セッション ホスト サーバーの RemoteApp マネージャーにインストールされている署名証明書は一致している必要があります。一致しない場合、Web SSO は機能しません。
  2. RemoteApp を起動したとき、RD 接続ブローカーにインストールされている証明書が RD セッション ホスト サーバーにインストールされている証明書と異なる場合、Web SSO は機能しません。ただし、RD 接続ブローカーの証明書と一致していないことは指摘されません。ポップアップ ウィンドウには、RemoteApp マネージャーに設定されている証明書のみが表示されるため、証明書に問題があることを突き止めるのは容易ではありません。

Web SSO のセットアップの詳細については、ブログ記事「Introducing Web Single Sign-On for RemoteApp and Desktop Connections (RemoteApp とリモート デスクトップ接続における Web シングル サインオンの概要、英語)」を参照してください。

RD Web アクセス サイトをセキュリティで保護する

Web サイトをセキュリティで保護することは、RDS に限られたことではありません。RD Web アクセス Web サイトをセキュリティで保護するには、Web サイトの DNS 名を含む証明書を IIS に追加します (図 3 参照)。

DNS 名を含む証明書を追加すると、RD Web アクセス サイトをセキュリティで保護できる

図 3 DNS 名を含む証明書を追加すると、RD Web アクセス サイトをセキュリティで保護できる

サーバーのローカル コンピューターの個人ストアにインストールされていて、プライベート キーを含む証明書は、[編集] メニューの対応するドロップダウン ボックスにオプションとして表示されます。

証明書を使用して RD ゲートウェイを構成する

RD ゲートウェイでは、クライアントとサーバー間の通信 (特にインターネット経由で行われる通信) を暗号化するために証明書が必要になります。SSL 証明書には、外部ユーザーが解決できる RD ゲートウェイ サーバーの DNS 名 (rdgateway.domain.com など) が含まれている必要があります。

RD ゲートウェイの証明書は、RD ゲートウェイ マネージャーのプロパティ ダイアログ ボックスの [SSL 証明書] タブからインストールします (図 4 参照)。RD ゲートウェイの証明書の詳細については、TechNet ライブラリの記事 (英語) を参照してください。

RD ゲートウェイに証明書をインストールする

図 4 RD ゲートウェイに証明書をインストールする

RDS 展開で証明書をセットアップすると、通信をセキュリティで保護し、クライアントとサーバーの両方を認証できるようになります。役割サービスごとに証明書の要件はありますが、この記事の情報が、RDS の実装で証明書が必要な理由を理解し、各 RDS の役割サービスに証明書をインストールする方法と場所を理解する一助となれば、さいわいです。

Kristin Griffin

Kristin Griffin は、リモート デスクトップ サービスの MVP です。サーバー ベース コンピューティングのコミュニティに役立つマイクロソフト フォーラム (リモート デスクトップ サービス) を運営しており、RDS に関するブログ (blog.kristinlgriffin.com、英語) を公開しています。また、Mark Minasi の著書『Windows Server 2008 パーフェクトガイド』(翔泳社、2010 年) と『Windows Server 2008 R2 パーフェクトガイド』(ソフトバンククリエイティブ、2010 年) の執筆に貢献し、『Microsoft Windows Server 2008 Terminal Services Resource Kit』(Microsoft Press、2008 年) と『Microsoft Windows Server 2008 R2 Remote Desktop Services Resource Kit』(Microsoft Press、2010 年) を Christa Anderson と共同で執筆しました。

関連コンテンツ

RDS での証明書の使用についてよく寄せられる質問

Q. リモート デスクトップ サービス (RDS) の役割サービスで使用できるように、サーバーに証明書を追加する方法を教えてください。

A. サーバーのローカル コンピューターの個人用ストアにインストールされている証明書は RDS の実装に追加できます。ローカル コンピューターの個人用ストアに証明書を追加するには、次の手順を実行します。

  1. Microsoft 管理コンソール (MMC) スナップインを作成します ([ファイル名を指定して実行] または [検索] ボックスに「MMC」と入力します)
  2. 証明書スナップインを追加します ([ファイル] メニューの [スナップインの追加と削除] をクリックします)
  3. [追加] をクリックし、[コンピューター アカウント] を選択して [OK] をクリックします
  4. [個人] フォルダーにアクセスして、[証明書] フォルダーをクリックします
  5. [証明書] フォルダーを右クリックし、[インポート] をクリックして、CA から受け取った証明書をインポートします

RD ゲートウェイ マネージャーでは、[インポート] ボタンを使用して証明書をインポートできるので (手動で MMC スナップインを作成する必要がないので)、操作が簡単です。

Q. ユーザーが署名されたリモート デスクトップ プロトコル (RDP) ファイルを開いたときに警告メッセージが表示されないようにする方法を教えてください。

A. ポリシーの設定を有効にします。信頼済みの .rdp の発行元を表す証明書のセキュア ハッシュ アルゴリズム (SHA1) を指定します。このポリシーを有効にすると、クライアント側で信頼済みの証明書として表示される証明書を指定することになります。クライアントに信頼済みの証明書を指定すると、その証明書で署名された RDP ファイルも信頼されるようになります。このようにすると、発行元を信頼するかどうかを確認する警告メッセージが表示されなくなります。この設定の詳細については、ここ (英語) を参照してください。

Q. RD セッション ホスト サーバーに適切な証明書をインストールしていますが、接続の問題が解決しません。

A. 証明書と RDS の実装に関しては、いくつかの問題が確認されています。

  1. Server Gated Cryptography (SGC) 証明書を使用すると、問題が発生することがあります。使用している証明書が SGC 証明書でないことを確認してください。詳細については、RDS フォーラム (英語) のこのスレッドこのスレッドを確認してください。
  2. クライアントがサーバーに接続するときに "証明書はこの使用法に対して無効です" というエラー メッセージが表示される場合、RD セッション ホスト サーバーにインストールされている証明書の証明書チェーンが長すぎる可能性があります。詳細については、この RDS フォーラムのスレッド (英語) を参照してください。

Q. ワイルドカード証明書または記憶域ネットワーク (SAN) 証明書は RDS の実装で使用できますか。

A. はい、できます。SAN 証明書は、複数のホスト名を含む証明書です。SAN 証明書には複数のサブジェクト名が含まれるため、証明書が必要な複数の場所で同じ証明書を使用できます。たとえば、SAN 証明書には、RD ゲートウェイの DNS 名と RD Web アクセスの DNS 名だけでなく、RemoteApp ファイルの署名に使う DNS 名を含むものがあります。

  • rdgateway.domain.com
  • rdweb.domain.com
  • sign.domain.com

ワイルドカード証明書を使用すると、一般的な小規模なファーム展開の実装に必要な証明書をたった 2 つに抑えることができます。RD セッション ホスト ファームでは、ファームの DNS 名を参照する必要があり、通常、この名前は内部 DNS 名 (domain.local) になります。これは外部の DNS ゾーン名 (domain.com) と異なるため、この用途のための証明書が個別に必要になります。

Q. 1 台のサーバーに複数の役割サービスをインストールしています。このような構成でも、すべての使用中の役割サービスに証明書をインストールする必要はありますか。

A. はい、あります。各役割サービスでは、それぞれ異なる目的に証明書を使用します。複数の役割サービスを 1 台のサーバーでホストすることは可能ですが、証明書の実装については、個別に考える必要があります。

—K.G.