この特集のトップページへ
Chapter 8:プレゼンテーション層の構築

head2.gif8.3.2 SSLによる暗号化
 IISでは,デフォルトの状態では暗号化の機能は有効ではなく,ネットワーク上を流れる情報が漏洩する危険性がある。そのため,クレジットカード番号や業務情報など,漏洩してはならない情報を送受信する場合には,危険を伴うことになる。

 そこで,重要な情報を送受信したいときには,SSL(Secure Socket Layer)を使って通信を暗号化することが望ましい。SSLを使った暗号化機能を有効にするには,IISに「サーバー証明書」と呼ばれるファイルをインストールするなど,いくつかの作業が必要となる。

 ここでは,Windows 2000に付属している証明書サービスを使ったサーバー証明書の作り方,そしてサーバー証明書をIISにインストールしてSSLを有効にするまでの設定について説明する。

●サーバー証明書とは
 サーバー証明書とは,暗号化に用いる秘密鍵の情報が格納されたファイルのことである。SSLによる暗号化の大まかな流れは,次のようになる(Fig.8-66)。

【事前の準備】

  1. 秘密鍵と公開鍵を作る
     まず,サーバー上で事前に秘密鍵と公開鍵のペアを作っておく。

  2. 公開鍵を証明機関に渡す
     1で作成した鍵のうち,公開鍵を証明機関に渡し,サーバー証明書の発行依頼をする。証明機関とは,一定の登録手続きによって,クライアントやサーバーの証明書を発行する組織またはサーバーのことであり,一般的にはVerisign社などの公的な証明機関を利用する。しかし,組織内のサーバーやクライアントなど,多くの証明書が必要となる場合には,組織内にプライベートな証明機関を設置し,独自の証明書を発行することもできる。このような用途で利用されるのが,Windows 2000に添付されている証明書サービスである。
     証明機関は,渡された公開鍵を証明機関の秘密鍵で暗号化したサーバー証明書を返す。

  3. IISにインストールする
     1.で作成した秘密鍵と2.で取得したサーバー証明書をIISにインストールする。

【暗号化通信】

  1. サーバー証明書をクライアントに送信する
     クライアントが通信を始めようとしたとき,クライアントに対してサーバー証明書を送信する。

  2. クライアントが公開鍵を取り出す
     クライアントは,受信したサーバー証明書のなかから通信に使う公開鍵を取り出す。サーバー証明書はサーバーの公開鍵を証明機関の秘密鍵で暗号化したものであるから,証明機関の公開鍵を使うことで,情報を復号化することができる。有名な証明機関の公開鍵はWebブラウザにあらかじめ組み込まれているので,証明書を発行した証明機関の公開鍵がWebブラウザに登録されていれば,サーバーの公開鍵を取り出すことができる。

  3. 共通鍵を作る
     クライアント側では,通信に用いる暗号化の共通鍵を作る。SSLでは,通信そのものはサーバー側で作られた秘密鍵と公開鍵を使って暗号化するのではなく,ここで作成した共通鍵を用いる。共通鍵は,クライアントからサーバーに送信するときに使われる「クライアント鍵」,サーバーからクライアントに送信するときに使われる「サーバー鍵」の2つが作成される。

  4. 共通鍵を暗号化してサーバーに送信する
     3.で作成した共通鍵をサーバーの公開鍵で暗号化してからサーバー側に送信する。

  5. 共通鍵を取り出す
     サーバー側では,送信された共通鍵をサーバーの秘密鍵で復号化する。クライアントから送信されてきた情報は,サーバーの公開鍵で暗号化されているから,サーバーの秘密鍵を所持するサーバーしか解読できない。そのため,途中で共通鍵が漏洩することはない。

  6. 暗号化通信する
     以上の処理によって,クライアントとサーバーの双方が備えた共通鍵を使って暗号化し,通信する。

Fig.8-66 SSLによる暗号化通信
fig8_66

 サーバー証明書には2つの種類がある。1つは,Verisign社などの公的証明機関に依頼し,公的証明機関の秘密鍵を使って暗号化してもらうもの,もう1つは,Windows 2000に添付されているような証明書サービスを使って独自に証明機関を設置し,証明書サービスが保持する秘密鍵で暗号化してもらうもの,である。

 暗号の強度自体は,公的証明機関に依頼して作成してもらったものも,証明書サービスを使って自ら作成したものも,変わらない。しかし,公的証明機関に依頼したほうが,社会的な信頼度は高くなる。これは技術的な問題ではなく,公的証明機関を通じて作られたサーバー証明書は,中立の第三者が認めたという信頼が付加されるからである。よって,たとえば不特定多数の顧客を対象に通販のWebサイトを立ち上げるような場合であれば,公的証明機関に依頼してもらうほうがよいと思われる。

 とはいえ,公的証明機関に証明書の発行を依頼すると,費用も期間もかかるため,主に社内用として単なる暗号化を実現したいだけであれば,証明書サービスを使ってサーバー証明書を作成してしまったほうが簡単である。そこで本稿では,証明書サービスを使ってサーバー証明書を作成する方法について説明することにする。


One Point!証明書サービスのようなプライベートな証明機関を使う場合には,Webブラウザにあらかじめ証明機関の公開鍵をインストールしておかなければならないことがある。しかし,Windows2000の証明書サービスで作成したサーバー証明書は自分自身を証明するという「自己証明書」であるためその作業は不要である。証明機関の公開鍵をWebブラウザにインストールする方法については「●SSLを有効にする」で説明する。
Prev 35/43 Next