今回から4回に分けて、証明書サービスを取り上げる。証明書サービスは主にSSL(Secure Sockey Layer)を使った暗号化通信を行う際の必須アイテムと言えるが、それ以外にもさまざまな用途でデジタル証明書が関わってくるため、案外と出番が多い機能である。

証明書サービスとはどんなものか?

デジタル証明書とは、公開鍵暗号とデジタル署名によって成立する公開鍵基盤(PKI : Public Key Infrastructure)を実現するために必要なアイテムである。公開鍵暗号を利用する際に必要となる鍵ペア(公開鍵と秘密鍵)について、認証局(CA : Certificate Authority)がデジタル署名を施すことでデジタル証明書になり、ニセモノの鍵ペアが出現する事態を防止している。

言い換えれば、公開鍵基盤の成立には、証明局が信頼性を備えていることが前提となる。そのため、インターネット上ではベリサインをはじめ、公的な認証力があるという認定を受けた認証局が階層構造を構成して、公開鍵基盤の信頼性を維持している。

しかし、信頼性を備えている認証局からデジタル証明書の発給を受けるには、当然ながら費用がかかる。インターネットを介して不特定多数を対象とするサービスを提供する場合はそれが必要だが、社内システムなど、特定少数のユーザーに対してのみサービスを提供する目的でいちいち認証局からデジタル証明書の発給を受けるのは経済的ではないことがあるかもしれない。そこで登場するのが、Windowsの証明書サービスである。

もちろん、Windowsの証明書サービスは誰でも自由に立ち上げることができるものなので、公的な証明力はまったくなく、インターネットで不特定多数に対してサービスを提供する際に使用することはできない。それゆえ、こうした時価発行のデジタル証明書を「オレオレ証明書」という。しかし、会社などの組織で内輪限定のサーバ証明書を用意したいという場面であれば、オレオレ証明書でも用が足りる。

ただし、クライアントPCにも証明書サービスのCA証明書を配布する手間がかかる点に留意されたい。公的な証明力がある認証局のCA証明書なら、最初からOSにインストールしてあるが、オレオレ証明書はそういうわけに行かないからだ。

SSL使用時の注意点

IIS(Internet Information Service)でSSLを利用する場合だけでなく、後日に取り上げる予定のリモートアクセス用VPN(Virtual Private Network)プロトコル「SSTP(Secure Socket Tunneling Protocol)」を利用する際も、デジタル証明書が必要になる。

そこで注意が必要なのは、SSLを利用する複数の機能を同一のサーバで同時に実行してはならないことだ。具体的に言うと、以下の3つの機能はそれぞれ異なるサーバで実行する必要がある。

  • IISによるSSL通信(HTTPS)
  • SSTPによるVPNゲートウェイ
  • ターミナルサービス ゲートウェイ(TSゲートウェイ)

また、IISでSSLを使用する際は、以下の注意点がある。

  • 1つのWebサイトに割り当てることができるサーバ証明書は1つだけで、複数のサーバ証明書を同時に割り当てることはできない
  • 複数のWebサイトに同じサーバ証明書を割り当てることはできる
  • 同じWebサーバでSSLの使用・不使用を使い分けたい場合は、SSLを使用するWebサイトとSSLを使用しないWebサイトを分ける
  • 同じサーバに複数のWebサイトがあり、それらでSSLを使用する際は、2番目以降は宛先ポート番号を変える必要がある。SSLの使用/不使用だけならウェルノウンポートが異なるので問題ないが、複数のWebサイトでSSLを同時に使用すると、重複が発生するからだ

証明書サービスの導入

では、Windows Server 2008で証明書サービスを導入する際の手順を説明しよう。本稿では、Webブラウザを通じて行うサーバ証明書の請求を容易にするために、証明書サービスをSSLを用いる同じコンピュータにインストールする。

これは、Windowsサーバに組み込んであるInternet Explorerのセキュリティ設定の関係から、サーバ証明書を請求するコンピュータと証明書サービスが稼働するコンピュータが異なっていると、証明書サービスを稼働させる側でSSLを有効にしなければ作業を行えないなど、面倒な作業が必要になるためだ。両者が同一のコンピュータであれば、この制約を緩和できる。

Windows Server 2008では、証明書サービスは[Active Directory証明書サービス]という名前の役割になっているので、それを[サーバーマネージャ]で追加すればよい。

(1) [サーバーマネージャ]左側のツリー画面で[役割]を選択した状態で、画面右側で[役割の追加]をクリックする。

(2) ウィザード2画面目で、[Active Directory証明書サービス]のチェックをオンにして続行する。

サーバーマネージャで役割の追加を指示して、[Active Directory証明書サービス]のチェックをオンにする

(3) 役割サービス一覧の既定値では、[証明機関]のチェックだけがオンになっているが、さらに[証明機関Web登録]のチェックもオンにして続行する。Web画面を通じて証明書の申請などを行うためだ。すると、Webサーバ機能が必要になるので、IISも必要という理屈になる。そのため、IISを組み込んでいなければ組み込むよう求めてくるので、指示にしたがって追加する。

[証明機関]と[証明機関Web登録]のチェックをオンにして続行する。IISを追加するよう求めてきた場合には、その通りにする

(4)次に、証明書サービスによって運用するCAの種類を選択する。ドメインコントローラになっているコンピュータでは[エンタープライズCA]と[スタンドアロンCA]の選択が可能だが、スタンドアロンサーバや一般サーバでは、[スタンドアロンCA]しか選択できない。通常はスタンドアロンCAでよいだろう。

(5)次に、CAの種類を選択する。CAは階層構造を持てるが、新規で作成する場合は階層がないため、最上位となるルートCAを選択する。既存のルートCAの下に別のCAをぶら下げる時は[下位CA]を選択する。

新規作成するCAでは、[ルートCA]を選択すること

(6)次の画面で、新しい秘密鍵を作成するかどうか訊ねられるので、作成するよう指示する。

(7)次の画面で暗号化サービスプロバイダの選択と鍵長の指定を求められるが、これは既定値のままで続行する。

暗号化サービスプロバイダと鍵長は既定値のまま

(8)次の画面で、作成するCAの共通名を指定する。これも、特に理由がなければ既定値のままで続行する。

(9)次に、CAから配布するデジタル証明書の有効期間を指定する。これも既定値のままで続行する。

(10)次に、証明書データベースとログの配置場所を指定する。これも既定値のままで続行する。

(11)ウィザード最終画面で[インストール]をクリックして、証明書サービスの組み込みとCAの立ち上げを行う。IISの追加が必要になったら追加する。