IIS-5.1(WindowsXP Professional)の設定

WindowsNT系のWebサーバでは、IISというサーバがよく使われている。標準的なWindowsのサーバであるためUnixのApacheと比べて、設定がGUIで簡単にできる。ここではIISの基本的な設定などをApacheの設定と合わせながら説明する。なおOSはWindowsXP Professionalを想定しており、IISのインストールはコントロールパネルの「プログラムの追加と削除」から行うので、XPのCD-ROMが必要。
IISはHTTPだけでなく、FTPやSMTP、SSLなども扱うこともできる。SMTPサーバはここでは紹介しない。またSSLについては、証明書要求をテスト用に自己署名するためにはWindows2000 Serverでないと行えないため、ここでは他のツールとしてOpenSSLを利用して自己署名証明書を作成する方法を紹介する。なお正式にCAへ署名してもらい、その証明書をインストールするならOpenSSLを使う必要はない。

http://www.microsoft.com/iis/
DefaultPort : 80 (HTTP) / 443 (HTTPS) / 21 (FTP)

HTTPサービス

 IISのWebサーバをインストールするときは、完全に設定が終了するまで外部に公開しないようにしたい。インターネット上にはNimdaやCodeRedなどのWORMが頻繁に飛び交っており、不完全な設定で外部に公開して、簡単に感染してしまう恐れもある。設定が完全に終わるまでインターネットにつなげない、ポート番号を変える、認証をかけるなどの対策が必要。

1)「コントロールパネル」「プログラムの追加と削除」「Windowsコンポーネントの追加と削除」「インターネット インフォメーション サービス(IIS)」から、使用するコンポーネントをチェックしてインストールを行う。ここではFTP、WWW、スナップイン、共通コンポーネントを選択した。その後「次へ」を押してインストールを開始する。WindowsのCD-ROMを要求されたらドライブにCDを入れて続行。インストール完了後コンピュータを再起動する。再起動後、コントロールパネルの管理ツールの中に「インターネット インフォメーション サービス」というショートカットができていることを確認する。

2)IIS(HTTP)の起動は、サービスの「World Wide WebPublishing」を開始させることでポート80にアクセスさせることができる。インストール後は通常マシン起動時に自動的に起動されるように設定されているので、必要に応じて設定を変更する。またApacheなど他のWebサーバを使っている場合も設定変更が必要。

3)IISの設定は「コントロールパネル」「管理ツール」「インターネット インフォメーション サービス」で行うので、これを実行する。設定方法は画面を見ればだいたいわかるが、よく利用すると思われる項目を挙げる。

Port:
Webサーバのポート番号を指定する。既定のWebサイトのプロパティから「Webサイト」タブで設定可。デフォルトはHTTPが80、SSLは443。証明書がインストールされていなければSSLポートを変更することはできない。

CustomLog/ErrorLog:
IISのログを記録する場合は、既定のWebサイトのプロパティから「Webサイト」タブで設定する。「ログ収集を有効にする」チェックをつけ、「プロパティ」で詳細な設定を行う。

DocumentRoot:
ルートディレクトリの設定。既定のWebサイトのプロパティから、「ホームディレクトリ」の「ローカルパス」で変更可能。デフォルトでは「C:\Inetpub\wwwroot」となっている。

DirectoryIndex:
ファイル名を指定せずにアクセスされた場合に表示するファイル名の順序。各ディレクトリごとに行うことができる。ディレクトリのプロパティから「ドキュメント」タブ、「既定のドキュメントを有効にする」にチェックを入れ、その下の欄にファイル名を記述。上にあるほど優先度が高い。

AuthType:
ディレクトリに認証をかける。IISでは「匿名アクセス」「基本認証」「統合認証」の3種類のモードがあり、Apacheと違って認証はWindowsのログイン認証を使う。匿名アクセスは認証を行わない。基本認証は、パスワードが平文のままネットワーク上に流れるので注意が必要(ApacheでいうBasic認証にあたる)。「統合Windows認証」は、基本認証と違ってパスワードが暗号化され、クライアントに登録されているユーザ名とパスワードが一致していれば認証ダイアログが出ずに、匿名アクセスと同じ感覚で利用できる。ただし閲覧環境が限られ、プロキシ経由では正しく認証できないという欠点もある。設定はディレクトリプロパティの「匿名アクセスおよび認証コントロール」の「編集」で設定する。

DAVOn:
WebDAVを使って、ディレクトリをWebフォルダとして共有するための設定。Apacheのmod_davと違って、IISではデフォルトで利用できる。共有したいディレクトリを右クリックし、プロパティで「Web共有」「このフォルダを共有する」で共有ができる。基本的にスクリプト関係はオフにしたほうがよい。Webフォルダを利用する場合は、「マイ ネットワーク」から「ネットワーク プレースを追加する」で共有できる。

Alias:
ディレクトリのエイリアスはディレクトリの設定から「新規作成」「仮想ディレクトリ」で追加できる。NFSのように、ネットワーク越しの他のコンピュータのディレクトリを追加することはできない。

Options:
ディレクトリのアクセスに関する設定。ディレクトリプロパティの「ホームディレクトリ」タブで設定する。「ディレクトリの参照」にチェックをつけると、デフォルトドキュメントが存在しない場合にそのディレクトリ内のファイル一覧を表示させる。「スクリプトソースアクセス」にチェックが入っていると、ASPやCGIなどのスクリプトのソースをそのまま表示する。ASPを使うには、下の「実行アクセス権」を「スクリプトのみ」または「スクリプトおよび実行可能ファイル」に変更することで可能であるが、その設定にかかわらず、ここにチェックが入っていると必ずソースを表示するようになる。通常はチェックしておく必要はない。

※PERL-CGIを有効にするには、当然ActivePerlなどのプログラムがインストールされていなければならない。インストール後はCGIスクリプト(拡張子が「.cgi」や「.pl」のファイル)をPERLで開くような設定を行う。既定のWebサイトのプロパティから「ホームディレクトリ」「構成」「マッピング」「追加」で各種設定を行う。「実行ファイル」に「(PERLのインストールパス)\bin\perlis.dll」、設定したい拡張子(ドットをつける)、動詞は「制限」を選択して「GET,HEAD,POST」と入力、「スクリプトエンジン」のチェックをはずしてOKを押す。これで指定した拡張子のファイルがPERLで実行できるようになる。また実際に実行可能にするには、ディレクトリプロパティで「ホームディレクトリ」「実行アクセス権」を「スクリプトおよび実行可能ファイル」に設定する。

4)設定が完了したらIISを再起動し、ホームディレクトリにドキュメントを置いて、「http://localhost/」などで正しくアクセスできることを確認する。

ASPの動作確認
CGIの動作確認
SSIの動作確認

PHP

Windows版のPHPがインストールしてあれば、IISでも利用することができる。使う方法としてはDLLとEXEの2通りがあり、機能的にどちらもそれほど変わりないが、ApacheのようにCGIファイルとして使うにはすでにあるCGIの設定を無効にする必要がある。

1)PHPがインストールされていなければインストールする。以後「C:\PHP4」にインストールしたものとして説明。インストール後はphp4ts.dllとphp.ini-distを%SystemRoot%にコピーする。コピーしたphp.ini-distは「php.ini」とリネームして、必要なら設定を編集する(Apacheのインストールでこの作業を行っていればそのままIISでも使えるので、ここは読み飛ばしてもよい)。

2)拡張子「.php」のファイルを、DLLを利用して開く場合の設定。IISの既定のWebサイトのプロパティの、「ISAPIフィルタ」タブの「追加」ボタンを押し、フィルタ名の欄に「PHP」と入力し、実行ファイルにはPHPのインストールディレクトリ下「sapi\php4isapi.dll」と指定する。設定したらOKボタンで確定。

3)その後「ホームディレクトリ」タブの「構成」「追加」を押し、拡張子別に設定変更をする。実行ファイルはPHPのインストールディレクトリ下の「sapi\php4isapi.dll」を指定。「すべての動詞」を選択し、「スクリプトエンジン」チェックON、「ファイルの存在を確認する」チェックOFFで設定する。終わったらOK、OK。

4)拡張子「.phtml」のファイルを、EXEを利用して開く設定。既定のWebサイトのプロパティ、「ホームディレクトリ」「構成」「追加」で、実行ファイルをPHPディレクトリの下の「php.exe」を指定。

5)PHPスクリプトを実行させるディレクトリに、スクリプト権限を与えておく。ディレクトリプロパティの「仮想ディレクトリ」タブ内の実行アクセス権を「スクリプトのみ」に設定。

PHPの動作確認

FTPサービス

 

上の(1)でFTPサービスを有効にしていれば、IISの設定画面で「FTPサイト」の項目が存在している。FTPDを起動するには、サービスから「FTP Publishing」を開始させる。基本的な設定はHTTPと同じようにすればよい。
 FTPもまたWindowsのログイン認証を使っているため、インストール直後からユーザによるログインは可能である。ただしデフォルトではファイルの読み出しだけで削除や書き込みなどはできないようになっている。既定のFTPサイトのプロパティの「ホームディレクトリ」のアクセス権で「書き込み」をオンにすればできるようになる。またこのFTPサーバはデフォルトでAnonymousログインを許可しているため、匿名アクセスが可能になっている。禁止したい場合は既定のFTPサイトの「セキュリティ アカウント」、「匿名接続を許可する」のチェックをはずす。
 IISのFTPサーバは、どのユーザでログインしても「ホームディレクトリ」の「ローカルパス」で設定したディレクトリがデフォルトのカレントディレクトリになる。しかしこのディレクトリの中にログインユーザ名と同じ名前のディレクトリがあれば、そこがカレントディレクトリになる。anonymousの場合は「Anonymous」。

SSL

WindowsXP Professionalで、自己署名した証明書をIISにインストールする方法を紹介する。署名にはOpenSSLを使うため、Win32版OpenSSLをインストールしておく。

1)IISで証明書要求を作成する。既定のWebサイトのプロパティから「ディレクトリ セキュリティ」「サーバー証明書」「次へ」「証明書の新規作成」「証明書の要求を作成して後で送信する」を選択、証明書の名前はわかりやすい名前にして「次へ」、「組織」は会社名、「部門」は部門名を、「一般名」は自分のサーバの正しいFQDNを入力する。国別コードを選択して、都道府県、市区町村を入力し、できた証明書要求をファイルに保存する。ここでは「server.csr」とした。

2)OpenSSLがインストールされていなければインストールする。ここでは「C:\APACHE\openssl」にインストールしたものとして説明する。その後OpenSSLの設定ファイルを書き換える。例として以下のように設定。

CA_default

dir = .
certs = $dir
crl_dir = $dir
database = $dir/index.txt
new_certs_dir = $dir
certificate = $dir/server.ca
serial = $dir/serial
crl = $dir/server.crl
private_key = $dir/server.key
RANDFILE = $dir/.rand

この後、「index.txt」(空ファイル)と「serial」(「01」とだけ記述)というファイルを、証明書類を格納するためのディレクトリに保存する。(1)で作成した証明書要求もここに格納する。

3)キーペアを作成し、証明書に署名する。コマンドプロンプトでopensslコマンドを実行。

C> cd \apache\conf
C> ..\openssl\bin\openssl
OpenSSL> genrsa -out server.key 1024
OpenSSL> req -config ..\openssl\bin\openssl.cnf -new -x509 \
-key server.key -out server.ca
OpenSSL> ca -config ..\openssl\bin\openssl.cnf -days 365 \
-infiles server.csr -out server.crt
OpenSSL> x509 -in server.crt -out server.cer

4)できた証明書「server.cer」を、IISの既定のWebサイトのプロパティ、「ディレクトリセキュリティ」「サーバー証明書」で、「保留中の要求を処理し、証明書をインストールする」で指定し、導入完了。「https://localhost/」にアクセスして、警告画面の後正しくアクセスできることを確認する。

※実際にCAへ署名してもらう場合は、(1)でできた証明書要求をCAへ送信し、送られてきた証明書を(4)のようにしてインストールすればよい。

TOP OF PAGE