Dell Optiplex GXa Solaris 8  x86  6/00

戻る




Apache/1.3.23 (Unix) mod_perl/1.26 mod_ssl/2.8.7 OpenSSL/0.9.6c


※後に現在の最新の、
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
の記録あり。


	※※ 注 ※※
	 Apache以下のバージョンは、DoS攻撃に対する脆弱性になり得る
	 セキュリティホールがある事が判明しています。

	 1.2 系列: バージョン 1.2.2  以降
	 1.3 系列: バージョン 1.3.24 以前
	 2.0 系列: バージョン 2.0.36 以前

	 1.3.26以降または2.0.39以降にバージョンアップされる事を
	 お奨めします。
	 詳細は
	 http://www.cert.org/advisories/CA-2002-17.html
	 http://httpd.apache.org/info/security_bulletin_20020617.txt


必要なソフトウェア:

apache_1.3.23.tar.gz
http://www.apache.org/dist/httpd/

openssl-engine-0.9.6c.tar.gz
http://www.openssl.org/source/

mod_ssl-2.8.7-1.3.23.tar.gz
http://www.modssl.org/source/

mod_perl-1.26.tar.gz
http://perl.apache.org/dist/


準備

作業ディレクトリを作成し、移動しておく。
	$ mkdir /opt/src/apache1.3.23
	$ cd /opt/src/apache1.3.23


apacheの解凍展開

アーカイブをダウンロードする。
	$ wget http://www.apache.org/dist/httpd/apache_1.3.23.tar.gz

解凍展開しておく。
	$ tar xozf apache_1.3.23.tar.gz

	
OpenSSL (0.9.6c) のインストール

アーカイブをダウンロードする。
	$ wget http://www.openssl.org/source/openssl-engine-0.9.6c.tar.gz

解凍展開する。
	$ tar xozf ./openssl-engine-0.9.6c.tar.gz

SuperUserになる。
	$ su
	password:

オーナーとグループを変更しておく
	# chown -R root:other openssl-engine-0.9.6c

解凍展開されたディレクトリに移る。
	# cd openssl-engine-0.9.6c

最適化する。
	# ./config

コンパイルする。
	# make

テストする。
	# make test
	
===============================================
Approximate total server time:   0.44 s
Approximate total client time:   1.27 s
make[1]: Leaving directory `/opt/src/apache1.3.23/openssl-engine-0.9.6c/test'
OpenSSL 0.9.6c [engine] 21 dec 2001
built on: 2002年02月02日 (土) 00時15分53秒 JST
platform: solaris-x86-gcc
options:  bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) idea(int) blowf
ish(idx)
compiler: gcc -fPIC -DTHREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -O3 -fomit
-frame-pointer -m486 -Wall -DL_ENDIAN -DNO_INLINE_ASM -DSHA1_ASM -DMD5_ASM -DRMD
160_ASM
===============================================


ってなメッセージが出れば成功。


SuperUserになってインストールする。
	# make install
	# exit
	$ cd ../

	
mod_ssl-2.8.7-1.3.23の解凍展開コンパイル

アーカイブをダウンロード
	$ wget http://www.modssl.org/source/mod_ssl-2.8.7-1.3.23.tar.gz

解凍展開する。
	$ tar xozf mod_ssl-2.8.7-1.3.23.tar.gz

ディレクトリを移る。
	$ cd mod_ssl-2.8.7-1.3.23

最適化する。
	$ ./configure --with-apache=../apache_1.3.23 \
		--with-ssl=../openssl-engine-0.9.6c \
		--prefix=/usr/local/apache

ディレクトリを戻っておく。
	$ cd ../

	
mod_perl-1.26の解凍展開インストール 

アーカイブをダウンロードする。
	$ wget http://perl.apache.org/dist/mod_perl-1.26.tar.gz

解凍展開する。
	$ tar xozf mod_perl-1.26.tar.gz

ディレクトリを移動する。
	$ cd mod_perl-1.26

Makefile Perlスクリプトを実行する。
	$ perl Makefile.PL APACHE_SRC=../apache_1.3.23/src \
		DO_HTTPD=1 \
		USE_APACI=1 \
		PREP_HTTPD=1 \
		EVERYTHING=1
 
makeする。
	$ make

SuperUserになって、インストールする
	$ su
	password:
	# make install
	# exit

ディレクトリを戻っておく。
	$ cd ../


Apache_1.3.23のインストール

もしも、既に以前のバージョンのapacheが/usr/local/apacheにインストールされていたら、
httpd.confの名前を変更しておく。(httpd.confが既に存在していると、インストールしても上書きさ
れないため)
	$ su
	password:
	# mv /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.old
	# exit

ディレクトリを移動する。
	$ cd ./apache1.3.23/src

Configurationファイルをviで開く。
	$ vi Configuration

以下の項目のコメントアウトを外して保存終了させる

===========================================================
Addmodule modules/standard/mod_log_agent.o
アクセスしてきたプラウザが名乗ったプラウザの種類を記録するためのモジュール。

Addmodule modules/standard/mod_log_referer.o
アクセスしてきたプラウザが示した、「どこの URL からたどってきた のか」という情報を記録する
ためのモジュール。

Addmodule modules/standard/mod_rewrite.o
要求された URL について正規表現を利用した書き換えを行うモジュール。

AddModule modules/standard/mod_so.o
動的モジュールを有効にするモジュール。
===========================================================


ひとつ上のディレクトリに移動する。
	$ cd ..

$ 最適化する。
	./configure --enable-module=ssl \
		--activate-module=src/modules/perl/libperl.a \
		--enable-module=so \
		--enable-module=rewrite

makeする。
	$ make

SuperUserになってインストールする。
	$ su
	password:
	# make install



証明書発行

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) []:T0shima-ku
Organization Name (eg, company) [Internet Widgits Pty Ltd]:domain
Organizational Unit Name (eg, section) []:tech
Common Name (eg, YOUR name) []:www.domain.com
Email Address []:you@domain.com
===========================================================


httpd.confを修正する。

念のためデフォルトのhttpd.confのバックアップを取っておく。
	# cp /usr/local/apache/conf/httpd.conf /usr/local/apache/conf/httpd.conf.default

viでhttpd.confを開く。
	# vi /usr/local/apache/conf/httpd.conf

	
以下の"赤字"の部分を書き換えて保存する。
  (注! 以下のhttpd.confの見本は、「とにかく何でも動く」設定で、セキュリティに関しては考慮
   していない。実際はcgiを許可するディレクトリなどは慎重にセキュリティポリシーを考える)

===========================================================
ServerType standalone
ServerRoot "/usr/local/apache"
PidFile /var/log/apache/httpd.pid
ScoreBoardFile /var/log/apache/httpd.scoreboard
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 150
MaxRequestsPerChild 0
ExtendedStatus On
Port 80
<IfDefine SSL>
Listen 80
Listen 443
</IfDefine>
User nobody
Group nobody
ServerAdmin you@domain.com
ServerName www.domain.com
DocumentRoot "/export/home/webmaster/htdocs"
<Directory />
    Options FollowSymLinks
    AllowOverride AuthConfig Limit
</Directory>
<Directory "/export/home/webmaster/htdocs">
    Options -Indexes FollowSymLinks MultiViews ExecCGI Includes
 AddHandler cgi-script .cgi
 AddHandler server-parsed .shtml
 AddType text/html .shtml
 AddType application/x-httpd-cgi .cgi
    AddType application/x-httpd-cgi .pl
    AllowOverride None
    Order allow,deny
 deny from 192.168.*
    Allow from all
</Directory>
<IfModule mod_userdir.c>
    UserDir public_html
</IfModule>
<Directory /export/home/*/public_html>
    Options -Indexes FollowSymLinks MultiViews ExecCGI Includes
        AddHandler cgi-script .cgi
        AddHandler server-parsed .shtml
 AddType text/html .shtml
        AddType application/x-httpd-cgi .cgi
    AddType application/x-httpd-cgi .pl
    Order allow,deny
    Allow from all
</Directory>
<IfModule mod_dir.c>
 DirectoryIndex index.html index.htm index.shtml index.cgi welcome.html welcome.htm
</IfModule>
AccessFileName .htaccess
<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>
UseCanonicalName On
<IfModule mod_mime.c>
    TypesConfig /usr/local/apache/conf/mime.types
</IfModule>
DefaultType text/plain
<IfModule mod_mime_magic.c>
    MIMEMagicFile /usr/local/apache/conf/magic
</IfModule>
HostnameLookups On
ErrorLog /var/log/apache/error_log
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog /var/log/apache/access_log "%h %l %u %t \"%r\" %s %b \"%{User-Agent}i\" %{Referer}i\""
ServerSignature On
<IfModule mod_alias.c>
    Alias /icons/ "/usr/local/apache/icons/"
    <Directory "/usr/local/apache/icons">
        Options -Indexes MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
#    Alias /manual/ "/usr/local/apache/htdocs/manual/"
#     <Directory "/usr/local/apache/htdocs/manual">
#         Options Indexes FollowSymlinks MultiViews
#         AllowOverride None
#         Order allow,deny
#          Allow from all
#     </Directory>
 ScriptAlias /cgi-bin/ "/export/home/webmaster/cgi-bin/"
 <Directory "/export/home/webmaster/cgi-bin">
        AllowOverride None
 Options -Indexes FollowSymLinks MultiViews ExecCGI Includes
        AddHandler cgi-script .cgi
        AddHandler server-parsed .shtml
        AddType application/x-httpd-cgi .cgi
        AddType application/x-httpd-cgi .pl
#       IndexOptions FancyIndexing
        Order allow,deny
        Allow from all
 </Directory>
</IfModule>
<IfModule mod_autoindex.c>
    AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
    AddIconByType (TXT,/icons/text.gif) text/*
    AddIconByType (IMG,/icons/image2.gif) image/*
    AddIconByType (SND,/icons/sound2.gif) audio/*
    AddIconByType (VID,/icons/movie.gif) video/*
    AddIcon /icons/binary.gif .bin .exe
    AddIcon /icons/binhex.gif .hqx
    AddIcon /icons/tar.gif .tar
    AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
    AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
    AddIcon /icons/a.gif .ps .ai .eps
    AddIcon /icons/layout.gif .html .shtml .htm .pdf
    AddIcon /icons/text.gif .txt
    AddIcon /icons/c.gif .c
    AddIcon /icons/p.gif .pl .py
    AddIcon /icons/f.gif .for
    AddIcon /icons/dvi.gif .dvi
    AddIcon /icons/uuencoded.gif .uu
    AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
    AddIcon /icons/tex.gif .tex
    AddIcon /icons/bomb.gif core
    AddIcon /icons/back.gif ..
    AddIcon /icons/hand.right.gif README
    AddIcon /icons/folder.gif ^^DIRECTORY^^
    AddIcon /icons/blank.gif ^^BLANKICON^^
    DefaultIcon /icons/unknown.gif
    ReadmeName README
    HeaderName HEADER
    IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
</IfModule>
<IfModule mod_mime.c>
    AddEncoding x-compress Z
    AddEncoding x-gzip gz tgz
    AddLanguage da .dk
    AddLanguage nl .nl
    AddLanguage en .en
    AddLanguage et .ee
    AddLanguage fr .fr
    AddLanguage de .de
    AddLanguage el .el
    AddLanguage nn .nn
    AddLanguage he .he
    AddCharset ISO-8859-8 .iso8859-8
    AddLanguage it .it
    AddLanguage ja .ja
    AddCharset ISO-2022-JP .jis
    AddLanguage kr .kr
    AddCharset ISO-2022-KR .iso-kr
    AddLanguage no .no
    AddLanguage pl .po
    AddCharset ISO-8859-2 .iso-pl
    AddLanguage pt .pt
    AddLanguage pt-br .pt-br
    AddLanguage ltz .lu
    AddLanguage ca .ca
    AddLanguage es .es
    AddLanguage sv .se
    AddLanguage cz .cz
    AddLanguage ru .ru
    AddLanguage zh-tw .tw
    AddLanguage tw .tw
    AddCharset Big5         .Big5    .big5
    AddCharset WINDOWS-1251 .cp-1251
    AddCharset CP866        .cp866
    AddCharset ISO-8859-5   .iso-ru
    AddCharset KOI8-R       .koi8-r
    AddCharset UCS-2        .ucs2
    AddCharset UCS-4        .ucs4
    AddCharset UTF-8        .utf8
    <IfModule mod_negotiation.c>
        LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
    </IfModule>
    AddType application/x-tar .tgz
    AddHandler cgi-script .cgi
    AddHandler server-parsed .shtml
</IfModule>
<IfModule mod_setenvif.c>
    BrowserMatch "Mozilla/2" nokeepalive
    BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
    BrowserMatch "RealPlayer 4\.0" force-response-1.0
    BrowserMatch "Java/1\.0" force-response-1.0
    BrowserMatch "JDK/1\.0" force-response-1.0
</IfModule>
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from Dell_2kp
</Location>
<Location /server-info>
    SetHandler server-info
    Order deny,allow
    Deny from all
    Allow from you'r_Windows
</Location>
<VirtualHost www.domain.com:80>
 SSLDisable
 Port 80
</VirtualHost>
<IfDefine SSL>
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl    .crl
</IfDefine>
<IfModule mod_ssl.c>
SSLPassPhraseDialog  builtin
SSLSessionCache         dbm:/var/log/apache/ssl_scache
SSLSessionCacheTimeout  300
SSLMutex  file:/var/log/apache/ssl_mutex
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
SSLLog      /var/log/apache/ssl_engine_log
SSLLogLevel info
</IfModule>
<IfDefine SSL>
<VirtualHost 192.168.0.150:443>
DocumentRoot "/export/home/webmaster/ssl_htdocs"
ServerName www.domain.com
ServerAdmin you@domain.com
ErrorLog /var/log/apache/error_log
CustomLog /var/log/apache/access_log "%h %l %u %t \"%r\" %s %b \"%{User-Agent}i\" %{Referer}i\""
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /usr/local/ssl/certs/cert.pem
SSLCertificateKeyFile /usr/local/ssl/private/key2.pem
SSLVerifyClient 0
SSLVerifyDepth  10
<Files ~ "\.(cgi|shtml|phtml|php3?)$">
    SSLOptions +StdEnvVars
</Files>
<Directory "/usr/local/apache/cgi-bin">
    SSLOptions +StdEnvVars
</Directory>
<Directory "/export/home/webmaster/ssl_htdocs">
    Order allow,deny
    Allow from all
    AllowOverride AuthConfig Limit
    Options -Indexes FollowSymLinks MultiViews ExecCGI Includes
    AddHandler cgi-script .cgi
    AddHandler server-parsed .shtml
 AddType text/html .shtml
    AddType application/x-httpd-cgi .cgi
    AddType application/x-httpd-cgi .pl
    <Limit GET POST OPTIONS PROPFIND>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS PROPFIND>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>
<IfModule mod_userdir.c>
    UserDir ssl_public_html
</IfModule>
<Directory /export/home/*/ssl_public_html>
    Order allow,deny
    Allow from all
    AllowOverride AuthConfig Limit
    Options -Indexes FollowSymLinks MultiViews ExecCGI Includes
    AddHandler cgi-script .cgi
    AddHandler server-parsed .shtml
 AddType text/html .shtml
    AddType application/x-httpd-cgi .cgi
    AddType application/x-httpd-cgi .pl
    <Limit GET POST OPTIONS PROPFIND>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS PROPFIND>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>
<IfModule mod_mime.c>
    TypesConfig /usr/local/apache/conf/mime.types
</IfModule>
SetEnvIf User-Agent ".*MSIE.*" \
         nokeepalive ssl-unclean-shutdown \
         downgrade-1.0 force-response-1.0
CustomLog /var/log/apache/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>                                  
</IfDefine>
===========================================================


httpd の起動

ログ用ディレクトリを作成しておく。
	# mkdir /var/log/apache

デフォルトのログファイルを作成したディレクトリにコピーしておく。
	# cp /usr/local/apache/logs/* /var/log/apache/

apacheの起動スクリプトを/etc/init.d/にコピーする。
	# cp /usr/local/apache/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