Dell Optiplex GXa | Solaris 8 x86 6/00 |
Apache/2.0.48 (Unix) mod_perl/1.99_10 Perl/v5.8.0 PHP/4.3.3 DAV/2 mod_ssl/2.0.48 OpenSSL/0.9.7c ※事前に autoconf-2.54 libtool-1.4.2 の2つをインストールしておく必要がある ポリシー ・簡易的にSSLを使い、一部のページのデータを暗号化させたい。 ・トラフィックを抑えるため、対応しているブラウザからのアクセスの場合は、テキスト ベースのデータは圧縮(mod_deflate)して、クライアント側で解凍させる(1.3.x時代 のmod_gzip) (相手がISDN以下の場合は特に効果が期待できる) ・HTTPヘッダー情報に表示されるApacheとそのバージョン名は架空のものを表示させ、 ある程度のセキュリティを確保したい。 ・バーチャルドメインを設定して、2個以上のドメイン名で運用したい。 ・ などなど。 Domain 例: Domain1 = domain1.com Server Name = www.domain1.com バーチャルドメインとして、 Domain2 = domain2.tv Server Name = domain2.tv & www.domain2.tv と Domain3 = domain3.net Server Name = domain3.net と Domain4 = domain4.com Server Name = domain4.com & www.domain4.com 必要なソフトウェア: httpd-2.0.48.tar.gz (24-Oct-2003 Rerease) http://www.apache.org/dist/httpd/ openssl-0.9.7c.tar.gz (30-Sep-2003 Rerease) http://www.openssl.org/source/ mod_perl-1.99_10.tar.gz (29-Sep-2003 Rerease) http://perl.apache.org/dist/ php-4.3.3.tar.gz (25-Aug-2003 Rerease) http://jp.php.net/ 準備 ※ これ以前にPerl-5.8.0-RC2をインストールしておく必要がある 作業ディレクトリを作成し、移動しておく $ mkdir /opt/src/apache-2.0.48/ $ cd /opt/src/apache-2.0.48/ OpenSSL (0.9.7c) のインストール アーカイブをダウンロードする $ wget http://www.openssl.org/source/openssl-0.9.7c.tar.gz 解凍展開する $ tar xozf ./openssl-0.9.7c.tar.gz SuperUserになる $ su password: オーナーとグループを変更しておく # chown -R root:other openssl-0.9.7c 解凍展開されたディレクトリに移る # cd openssl-0.9.7c 最適化する # ./config コンパイルする # make SuperUserになってインストールする # make install シェアード・ライブラリをmakeする # make build-shared 出来上がったライブラリをそれぞれ/usr/local/lib内にコピー # cp libcrypto.a /usr/local/lib/ # cp libcrypto.so /usr/local/lib/ # cp libcrypto.so.0 /usr/local/lib/ # cp libcrypto.so.0.9.7 /usr/local/lib/ # cp libssl.a /usr/local/lib/ # cp libssl.so /usr/local/lib/ # cp libssl.so.0 /usr/local/lib/ # cp libssl.so.0.9.7 /usr/local/lib/ コピーしたライブラリのシンボリックリンクを/usr/lib/内に張る # ln -s /usr/local/lib/libcrypto.a /usr/lib/ # ln -s /usr/local/lib/libcrypto.so /usr/lib/ # ln -s /usr/local/lib/libcrypto.so.0 /usr/lib/ # ln -s /usr/local/lib/libcrypto.so.0.9.7 /usr/lib/ # ln -s /usr/local/lib/libssl.a /usr/lib/ # ln -s /usr/local/lib/libssl.so /usr/lib/ # ln -s /usr/local/lib/libssl.so.0 /usr/lib/ # ln -s /usr/local/lib/libssl.so.0.9.7 /usr/lib/ 一般ユーザーに戻る # exit Apache/2.0.48のインストール アーカイブをダウンロードする $ wget http://www.apache.org/dist/httpd/httpd-2.0.48.tar.gz 解凍展開する $ tar xozf httpd-2.0.48.tar.gz ディレクトリを移動する $ cd /opt/src/apache-2.0.48/httpd-2.0.48 cshやtcshではうまくいかないので、shかbashになる $ sh 環境変数を指定しつつ最適化スクリプトを実行する $ CC=gcc LDFLAGS=-L/usr/local/lib ./configure --enable-modules=mod_access \ --enable-modules=mod_actions \ --enable-modules=mod_alias \ --enable-modules=mod_asis \ --enable-modules=mod_auth \ --enable-modules=mod_auth_anon \ --enable-modules=mod_auth_db \ --enable-modules=mod_auth_dbm \ --enable-modules=mod_auth_digest \ --enable-modules=enable-cern-meta \ --enable-cache \ --enable-disk-cache \ --enable-mem-cache \ --enable-file-cache \ --enable-headers \ --enable-ssl \ --enable-dav \ --enable-info \ --enable-cgi \ --enable-cgid \ --enable-dav-fs \ --enable-vhost-alias \ --enable-speling \ --enable-rewrite \ --enable-expires \ --enable-deflate \ --with-z=/usr/local/lib \ --with-mpm=prefork \ --enable-so 簡単な説明: (勝手な解釈なので間違ってるかも)makeする $ make (とっても時間がかかる) SuperUserになってインストールする $ su password: # make install # exit $ mod_perl-1.99_10のインストール 作業ディレクトリに戻る $ cd /opt/src/apache-2.0.48/ mod_perlのアーカイブをダウンロードする $ wget http://perl.apache.org/dist/mod_perl-1.99_10.tar.gz ダウンロードしたアーカイブを解凍展開する $ tar xozf ./mod_perl-1.99_10.tar.gz 展開したディレクトリに移動する cd mod_perl-1.99_10 perlで書かれた最適化スクリプトを走らせる $ /usr/local/bleedperl/bin/perl Makefile.PL MP_AP_PREFIX=/usr/local/apache2 コンパイルする $ make SuperUserになる $ su password: インストールする # make install PHP/4.3.3のインストール 作業ディレクトリを作成する $ mkdir /opt/src/php-4.3.3 作成したディレクトリに移動する $ cd /opt/src/php-4.3.3 アーカイブをダウンロードする $ wget http://jp.php.net/get/php-4.3.3.tar.gz/from/this/mirror 解凍展開する $ tar xozf ./php-4.3.3.tar.gz 展開されたディレクトリに移動する $ cd php-4.3.3 最適化スクリプトを実行する $ ./configure --with-apxs2=/usr/local/apache2/bin/apxs \ --with-mysql=/usr/local/mysql \ --enable-ftp コンパイルする $ make SuperUserになってインストールする $ su password: # # make install 設定ファイルを所定の位置にコピーする。 # cp php.ini-dist /usr/local/lib/php.ini # exit $ セキュリティ を高めるため、HTTPでアクセスされた時の応答メッセージ (httpd名とバージョン)を変える。 もしも自分が使っているバージョンにセキュリティホールが見つかってしまっ た場合、クラッカーはその情報を元に攻撃を仕掛けてくる可能性があるので、 ソースを少々書き換えて、表示させるhttpd名とバージョンを架空のHTTPDにして しまう。 面倒だが、Apacheをもう一度コンパイルし直し、再インストールする。 (PHPのインストール後にこれをしないとPHPのconfigureが途中で「Apacheの2.0以降 でやってくれぃ」というメッセージを残して止まってしまう) Apacheの作業ディレクトリのincludeディレクトリに移動する $ cd /opt/src/apache-2.0.48/httpd-2.0.48/include/ ap_release.hファイルをviで開く $ vi ap_release.h 最下項目(74行目以降)を以下のように書き換えて保存する (" " の中は適当に) /* ### 変更前 ### */ #define AP_SERVER_BASEVENDOR "Apache Software Foundation" #define AP_SERVER_BASEPRODUCT "Apache" #define AP_SERVER_MAJORVERSION "2" #define AP_SERVER_MINORVERSION "0" #define AP_SERVER_PATCHLEVEL "48" #define AP_SERVER_MINORREVISION AP_SERVER_MAJORVERSION "." AP_SERVER_MINORVERSION #define AP_SERVER_BASEREVISION AP_SERVER_MINORREVISION "." AP_SERVER_PATCHLEVEL #define AP_SERVER_BASEVERSION AP_SERVER_BASEPRODUCT "/" AP_SERVER_BASEREVISION #define AP_SERVER_VERSION AP_SERVER_BASEVERSION /* ### 変更後例 ### */ #define AP_SERVER_BASEVENDOR "MicroGates IOS" #define AP_SERVER_BASEPRODUCT "Netskirt-Entersurprise" #define AP_SERVER_MAJORVERSION "3" #define AP_SERVER_MINORVERSION "1" #define AP_SERVER_PATCHLEVEL "59" #define AP_SERVER_MINORREVISION AP_SERVER_MAJORVERSION "." AP_SERVER_MINORVERSION #define AP_SERVER_BASEREVISION AP_SERVER_MINORREVISION "." AP_SERVER_PATCHLEVEL #define AP_SERVER_BASEVERSION AP_SERVER_BASEPRODUCT "/" AP_SERVER_BASEREVISION #define AP_SERVER_VERSION AP_SERVER_BASEVERSION ※前回のconfigureでモジュールを含めた場合は、httpd.confに 「ServerTokens ProductOnly」 を記述することを忘れずに ひとつ上のディレクトリに戻る $ cd ../ 前回のコンパイルを無効にす $ make clean もう一度コンパイルする (やっぱり時間がかかる) $ make SuperUserになって再インストールする $ su password: # # make install # exit $ 証明書発行 Key を生成する時は、ランダムな情報を入力する必要があるが、例えば以下のようにすることで作成 することも可能 # cd /usr/local/ssl/bin # ./openssl md5 * > rand.dat Private Key を作成する # ./openssl genrsa -rand ./rand.dat -des 1024 > /usr/local/ssl/private/key.pem =========================================================== 95 semi-random bytes loaded Generating RSA private key, 1024 bit long modulus .................++++++ ....................++++++ e is 65537 (0x10001) Enter PEM pass phrase: ********** Verifying password - Enter PEM pass phrase: ********** =========================================================== Private Key からパスフレーズを外す # ./openssl rsa -in /usr/local/ssl/private/key.pem -out /usr/local/ssl/private/key2.pem read RSA key Enter PEM pass phrase: ********** writing RSA key 今回は認証局に依頼せず、自分で署名した証明を作成するので、下記のようになる # ./openssl req -new -x509 -key /usr/local/ssl/private/key2.pem -out /usr/local/ssl/certs/cert.pem =========================================================== You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:JP State or Province Name (full name) [Some-State]:Tokyo Locality Name (eg, city) []:Toshima-ku Organization Name (eg, company) [Internet Widgits Pty Ltd]:domain1 Organizational Unit Name (eg, section) []:tech Common Name (eg, YOUR name) []:www.domain1.com Email Address []:you@domain1.com =========================================================== httpd.confを修正する httpd.confの便利な日本語訳が、大阪のエンジニアスクールの"IT Boost社" に掲載されてます。トップページから、各種ソフトウェアのインストール・設定" →"Apache 2 httpd.conf 日本語訳"を辿ってみてください 念のためデフォルトのhttpd.confのバックアップを取っておく # cp /usr/local/apache2/conf/httpd.conf /usr/local/apache2/conf/httpd.conf.default viでhttpd.confを開く # vi /usr/local/apache2/conf/httpd.conf 見本 (Apache-2.0.48 httpd.conf) を参考に編集する。 =========================================================== ssl.confを修正する 念のためデフォルトのssl.confのバックアップを取っておく # cp /usr/local/apache2/conf/ssl.conf /usr/local/apache2/conf/ssl.conf.default viでssl.confを開く # vi /usr/local/apache2/conf/ssl.conf 見本 (Apache-2.0.48 ssl.conf) を参考に編集する。 =========================================================== httpd の起動 ログ用ディレクトリを作成しておく # mkdir /var/log/httpd デフォルトのログファイルを作成したディレクトリにコピーしておく # cp /usr/local/apache2/logs/* /var/log/httpd/ apacheの起動スクリプトを/etc/init.d/にコピーする # cp /usr/local/apache2/bin/apachectl /etc/init.d/httpd コピーした起動スクリプトを編集する # vi /etc/init.d/httpd 起動時にSSLも読み込むようにstartの部分を以下のように書き換えて保存する start) if [ $RUNNING -eq 1 ]; then echo "$0 $ARG: httpd (pid $PID) already running" continue fi if $HTTPD -DSSL; then echo "$0 $ARG: httpd started" else echo "$0 $ARG: httpd could not be started" ERROR=3 fi ;; ディレクトリを移動する # cd /etc/rc2.d/ 起動スクリプトのシンボリックリンクを張る # ln -s ../init.d/httpd ./S78httpd 起動させる # /etc/rc2.d/S78httpd start # exit
mod_access IPアドレスとHOST名でアクセス制御をする mod_actions リクエストに応じたCGI処理をする mod_alias DocumentRoot内にないディレクトリを、あたかもあるか
のように見せかけるように別途設定可能にするmod_asis 拡張子に.htmlを使っていないファイルの送信時のHTTP
ヘッダーを省略させるmod_auth パスワード認証機能(ベーシック認証)を使えるようにする mod_auth_anon ベーシック認証パスワードをかけたディレクトリで、
匿名アクセスも可能にできるmod_auth_db BerkrayDBを使ったベーシック認証を可能にする mod_auth_dbm DBMを使ったベーシック認証を可能にする mod_auth_digest MD5を使ったダイジェストユーザー認証を可能にする cern-meta CERNをエミュレートする file-cache メモリーにキャッシュさせて、応答速度を上げる cache 一度リクエストされたファイルは、アンコールされる可能性
が高いので、ダイナミックなキャッシュをさせるdisk-cache ディスクキャッシュを使用する mem-cache メモリーキャッシュを使用する headers HTTPヘッダーをカスタマイズできる ssl SSLを使用可能にする dav WebDAVを使用可能にする info 設定表示を使用可能にする cgi CGIを使用可能にする cgid マルチスレッドでもCGIを使用可能にする dav-fs DAVファイルシステムを使用可能にする vhost-alias バーチャルホストを使用可能にする speling 間違ったリクエストに対し、近いと判断できる
リクエストにリダイレクトさせるrewrite リダイレクトを使用可能にする expires クライアントのキャッシュを指定期限が過ぎ
たら、無効にさせることが出来るようにするdeflate 圧縮送信を使用可能にする with-z=/usr/local/lib 圧縮用のzlibが格納されているライブラリディレクトリ
を指定with-mpm=prefork mod_perlを使用する時に、これを含める必要がある so DSOを有効にする