SSLによるSecureWWWサーバの構築(Windows編)


Windows環境でのいろいろなサーバソフトの動作確認をするため、クライアントにApacheを入れていますが、SSL対応ができておらず不便なので対応させてみました。Apache+SSLのWindows版に関してはインターネット上にいろいろ情報はあったのですが、1.3系が主体で情報が古く、2.0系ではうまく動作しませんでした。いろいろ調査した結果、何とか動作するようになったのでここにまとめておきます。
なお、Apacheでは、SSLの運用形態の一つとして単に情報の暗号化を行うだけでなく、認証局(ここではプライベートCAを利用)で認証したクライアント証明書を使用することにより、その証明書を持ったクライアント以外からのアクセスを制限することができます。運用は煩雑になりますので、特別なケースでの運用形態と思われますが、より強力なセキュリティアクセスが可能となります。自宅サーバでも、ローカルな運用に使用したりできますので、その設定方法も簡単に解説しておきます。
動作確認はWindows2000 SP3 / XP Pro SP2で行っています。

■Apache+SSL for Win32のインストール

ApacheのサイトにあるファイルはSSLに対応していません。そこで、こちらにSSL対応のオールインワンのバイナリがありますので、これを使うことにしました。ダウンロードしたのは、Apache_2.0.53-Openssl_0.9.72-Win32.zipです。


最近(2005.12.03)、上記のHunterのサイトがDNSも牽けずアクセスできなくなっています。以前も同様のことがあったのですが、今回は少し長い気がしますので、Apache2+SSL対応のWindows版が置いてあるサイトを紹介して置きます。

  • http://brandleadershipmarketing.com/apache/

    元々、HunterのArchiveが置いてあったサイト。Hunterの状況から更新されるかは不明だが、とりあえず Apache_2.0.55-Openssl_0.9.8a-Win32.zip は存在する。

  • http://www.gknw.com/development/apache/

    "Unofficial CVS Apache webserver binaries and module binaries"というサイト名をどう思うかがあるが、SSL対応のバイナリが置かれている。httpd-2.0.55-w32.zipの動作はおやじは確認済み。ディレクトリが "Apache2" になっているので、そこだけ注意すればおやじのコンテンツが適用できる。

  • http://www.apachefriends.org/en/xampp.html

    こちらは少し毛色が違い、SSL対応のApache2のほか、MySQLやPHP、Perl、phpMyAdmin、Webalizer、Mercury Mail、FileZilla FTP Server 等が組み込まれた"XAMPP"というオールインワンバイナリである。下手にバラバラにインストールするより整合がとられているので、これを使用してしまうほうがよいかもしれない。XAMPPでググレば情報があるので、参考にするとよい。

  1. ダウンロードしたファイルをディレクトリ付きで適当な場所に解凍する。(おやじは、D:\work配下に解凍)
  2. 現在、Apacheがインストールされているなら、アンインストールする。なお、Apache.0系がインストールされていたなら、httpd.confがほとんど流用できるので、インストールされていたディレクトリ名を変更し、バックアップしておくとよい。(ex. C:\Apache -> C:\Apache_bak) なお、新規インストールの場合は、この項の作業は不要。
  3. 新規インストールの場合は、Apacheのインストールディレクトリをシステムがインストールされているパーティションに作成する。(ex. C:\Apache) インストール済みの場合は、バックアップ前のディレクトリ名でインストールディレクトリを作成する。
  4. 作成したディレクトリ配下に、1項で展開した中身を全てコピーする。
  5. コピーした、binディレクトリ内にある、libeay32.dllとssleay32.dllを C:\WINNT\system32内にコピーする。
  6. この後、インストールするが、httpd.confやssl.confの設定及びSSLの鍵や証明書の準備ができていないと蹴られるので、そちらの準備を先にする。

■Apache+SSL for Win32の設定

Apache+SSL for Win32を動かすため、httpd.confやssl.confの設定及びSSLの鍵や証明書の準備を行います。SSL用証明書等の作成については、こちらを参考に必要なものを作成してください。

◆httpd.confの設定

今までApache.0系を使用していた場合は、SSLモジュールの組み込み以外は、バックアップしてあったhttpd.confと同じでよいので作業は簡単です。新規インストールの場合は、下記により設定していきます。
設定情報は、Apacheディレクトリ中のconfディレクトリにあるhttpd.confにあるので、テキストエディタで編集していきます。
設定を変更した項目は以下のとおりです。変更する場合は、失敗に備えて変更行を下の行にコピーし、元の行の先頭に「」を付加することにより、コメント行として保存しながら作業しました。 どうにもならなくなったら、httpd.default.confやssl.default.confが初期のhttpd.confやssl.confと同一なので、いじくりすぎたhttpd.confやssl.confを削除して、httpd.default.confやssl.default.confをコピーしてファイル名を変更すれば初期状態に戻るので頭を整理しながらやり直したほうが早い場合もあります。(青字は削除、赤字は追加、緑字は変更したものです。)

◆SSLを動かすための設定 (ssl.confの設定)

  1. こちらで作成したサーバ用の鍵 (server.key) と証明書 (server.crt) を、Apacheのディレクトリ配下にコピーする。

    C:\etc>mkdir C:\Apache\certs
    C:\etc>copy server.key C:\Apache\certs

    C:\etc>copy server.crt C:\Apache\certs

  2. ssl.confの設定を行う。


◆クライアント認証を動かすための設定

クライアント認証関係の設定は、単に通信を暗号化(httpsでのアクセス)するだけなら不要です。
このクライアント用証明書によるクライアント認証を導入すると、予め認証局で署名されたクライアント用証明書を持たない端末がアクセスしても、接続そのものが拒否されるのでセキュリティ的にかなり強固になります。反面、クライアント毎に証明書を発行することになるので、運用はかなり面倒になりますが、セキュリティとのバータなので止むを得ません。
このようなクライアント認証は、一般的に企業などで導入されており、具体例としてはwebを使用して外勤の営業マンが社外から社内システムにアクセスできるシステムや株取引のシステムなどに導入されています。このようなシステムの場合、不特定多数にアクセスされるとApacheの認証やアプリ認証だけではセキュリティが甘くなるため、アクセスレベルでセキュリティを強化するためにクライアント認証を導入します。

  1. 作成したCA用証明書を、Apacheのディレクトリ配下にコピーする。

    C:\etc>copy demoCA\cacert.pem C:\Apache\certs

  2. 証明書失効リストを、Apacheのディレクトリ配下にコピーする。

    C:\etc>copy demoCA\crl\crl.pem C:\Apache\certs

    なお、失効が発生するたびにこの作業は必要になるので、ssl.confでcrl.pem作成ディレクトリを直接指定したほうが良いかもしれない。Windowsの場合は、リストを有効にするためApacheの再起動が必要である。

  3. ssl.confの設定を行う。

◆サービス起動の設定と起動

ここで、サービス起動できるように設定します。但し、一部レジストリを触るので注意が必要です

■Active Perlのインストール

さて、このままでは、CGIが動きません。CGIを動かすため、Perlをインストールします。

Active Perlをこちらからダウンロードします。おやじがダウンロードしたのは、以下のファイルです。

 ・ ActivePerl-5.8.6.811-MSWin32-x86-122208.msi
  1. ダウンロードしたファイルをインストールする。(Windows95/98/NTでは、Windows Installer 2.0が必要)

  2. 途中で、インストール先をC:\perlからC:\usr\localに変更してインストール。(おやじはこれで苦労した)

    これは、一般に提供されているCGIスクリプトの多くが、下記のようにPerlへのパスを指定しているからです。

       ・ #!/usr/local/bin/perl



  3. 次の画面で PPM3 を有効にするか聞いてくるので、「Enable PPM3 to send profile info to ASPN」にチェックを入れインストールを続行する。PPMを有効にしておくと後でいろいろなperlモジュールが必要になったとき簡単にインストールできる。



  4. インストールが完了したら、Windowsを再起動する。

     
ここで、Perlが正常にインストールできたか確認します。

  1. スタートメニューからMSDOSプロンプトを起動。

  2. c:\>perl -vと入力して、

    C:\>perl -v

    This is perl, v5.8.6 built for MSWin32-x86-multi-thread
    (with 3 registered patches, see perl -V for more detail)

    Copyright 1987-2004, Larry Wall

    Binary build 811 provided by ActiveState Corp. http://www.ActiveState.com
    ActiveState is a division of Sophos.
    Built Dec 13 2004 09:52:01

    Perl may be copied only under the terms of either the Artistic License or the
    GNU General Public License, which may be found in the Perl 5 source kit.

    Complete documentation for Perl, including FAQ lists, should be found on
    this system using `man perl' or `perldoc perl'. If you have access to the
    Internet, point your browser at http://www.perl.org/, the Perl Home Page.

    と表示されれば、成功。
これで、CGIも動かせます。 早速カウンタを動作させて見ましたが、うまく動作しているようです。

 

Top Pageへ