ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

セキュアなWebサーバ(Apache+mod_ssl)の設定方法

事前準備

Webサーバの選択

 Webサーバは、世界で最も使われているApacheを使います。 ApacheをSSL対応にするためには、mod_sslとOpenSSLが必要です。
 以下に、Apache+mod_ssl+OpenSSLのインストールについてまとめてあります。

入手方法

 以下のソフトをダウンロードし、/usr/local/pubに格納します。
 mod_sslは、Apacheのソースに対して、パッチをかけるので、バージョンに注意が必要です。

ユーザの作成

 Webサーバを起動するためのユーザを作成します。

unix# adduser
ユーザ名:wmaster
グループ名:env

Apache+mod_sslのインストール

 mod_sslを使うためには、OpenSSLが必要です。

unix# cd /usr/local/src
unix# gzip -cd ../pub/openssl-0.9.6.tar.gz | tar -xvf -
unix# cd openssl-0.9.6
unix# ./config -fPIC
unix# make
unix# make install

Apacheのメイク準備

 Apacheをメイクするための準備をします。 実際にメイクするのは、mod_sslをインストールして、ソースにパッチを当てた後です。

unix# cd /usr/local/src
unix# gzip -cd ../pub/apache_1.3.14.tar.gz | tar -xvf -
unix# cd apache_1.3.14
unix# setenv OPTIM -O2
unix# ./configure --prefix=/usr/local/apache --enable-module=so
(※ここで、make; make installは、しない)

mod_sslの組み込み

 次に、Apacheのソースにパッチをかけ、mod_sslを組み込みます。

unix# cd /usr/local/src
unix# gzip -cd ../pub/mod_ssl-2.7.1-1.3.14.tar.gz | tar -xvf -
unix# cd mod_ssl-2.7.1-1.3.14
unix# ./configure --with-apache=../apache_1.3.14 --prefix=/usr/local/apache \
--enable-shared=ssl --with-ssl=/usr/local/ssl
(※ここで、make; make installは、しない)

Apache+mod_sslのメイク

 Apache+mod_sslのメイクを行います。

unix# cd /usr/local/src
unix# cd apache_1.3.14
unix# make

証明書の作成とインストール

 SSL用の証明書を作成してから、インストールします。

unix# make certificate

Signature Algorithm ((R)SA or (D)SA) [R]:
1. Country Name             (2 letter code) [XY]:JP
2. State or Province Name   (full name)     [Snake Desert]:Ishikawa
3. Locality Name            (eg, city)      [Snake Town]:Kanazawa
4. Organization Name        (eg, company)   [Snake Oil, Ltd]:ASH
5. Organizational Unit Name (eg, section)   [Webserver Team]:webmaster
6. Common Name              (eg, FQDN)      [www.snakeoil.dom]:www.ash.jp
7. Email Address            (eg, name@FQDN) [www@snakeoil.dom]:info@ash.jp
8. Certificate Validity     (days)          [365]:
Certificate Version (1 or 3) [3]:
Encrypt the private key now? [Y/n]:
Enter PEM pass phrase:XXXXXXXX
Verifying password - Enter PEM pass phrase:XXXXXXXX

unix# make install

パスフレーズの解除

 Apacheを自動起動できるように、パスフレーズを解除します。 ただし、セキュリティ上は、パスフレーズは解除せず、起動する毎にパスフレーズを入力することをお勧めします。

unix# cd /usr/local/apache/conf/ssl.key
unix# cp -p server.key server.key.org
unix# openssl rsa -in server.key.org -out server.key
パスフレーズの入力

Apacheの設定

unix# cd /usr/local/apache/conf/
unix# vi httpd.conf (cp /conf/httpd/httpd.conf .)

・サーバ名の設定
ServerName www.ash.jp

・1つのログに詳細情報を出力するための設定
#CustomLog /usr/local/apache/logs/access_log common
CustomLog /usr/local/apache/logs/access_log combined

・ディレクトリのデフォルトインデックスファイルの設定
DirectoryIndex index.html index.htm index.cgi

・CGIの設定
<Directory "/usr/local/apache/cgi-bin">
  Options None FollowSymLinks ExecCGI
</Directory>
AddHandler cgi-script .cgi

・プロキシの自動設定のための設定
AddType application/x-ns-proxy-autoconfig .pac

自動起動の設定

 Webサーバを自動起動に設定します。 起動にには、/etc/rc2.dディレクトリ配下のシェルを実行するため、Swwhttpdを作成します。 このシェルを起動すると、httpサーバとhttpsサーバが、バーチャルホストにより動作するようになります。

unix# cd /etc/rc2.d
unix# vi Swwhttpd

#!/bin/sh

case "$1" in
start)
        apachectl sslstart
        ;;
stop)
        apachectl stop
        ;;
*)
        echo "Usage: `basename $0` {start|stop}" >&2
        ;;
esac

exit 0

unix# chmod +x Swwhttpd

動作確認方法

 ブラウザで、以下のURLにアクセスしてみます。

https://www.ash.jp/


Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp