apacheをssl通信出来るようにします。
CentOS3にソースからインストールを行いました。
現在の最新バージョンはhttpd-2.0.61でした。
場所はhttp://www.apache.org です。
ssl通信を行うにはmod_sslが必要ですがソースファイルの中に入っています。
また,opensslがインストールされている必要があります。
rpmの場合,opensslとopenssl-develがインストールされていればOK。
私の環境には入っていましたのでそのまま使うことにしました。
ではさっそくapacheのインストールを行いましょう。
# tar zxvf httpd-2.0.61.tar.gz -C /usr/local/src
# cd /usr/local/src/httpd-2.0.61
# ./configure --enable-ssl
--enable-ssl オプションでsslによる暗号化通信が可能になります。
その他必要なオプションは任意に指定してください。
# make
# make install
これで終了。
あとはコンフィグファイルの編集です。
/usr/local/apache2/conf/httpd.conf と /usr/local/apache2/conf/ssl.conf です。
今回はhttpd.confの設定は省略します。
# vi /usr/local/apache2/conf/ssl.conf
---
DocumentRoot "/usr/local/apache2/htdocs"
ServerName host.domain.com:443
ServerAdmin mail@address.com
SSLCertificateFile /usr/local/apache2/certs/server.crt
SSLCertificateKeyFile /usr/local/apache2/certs/server.key
---
証明書関係を作成する必要があります。
自己証明書,もしくはベリサインなどの有料の証明書の利用などが考えられます。
自宅サーバなどでは自己証明書でいいですが企業などの場合はきちんとした証明書を利用することになると思います。
作成した証明書とキーはSSLCertificateFileとSSLCertificateKeyFileに設定します。
証明書関係は後日記入します。
ここまでできたら後は自動起動ファイルの編集です。
# vi /etc/init.d/httpd
---
#!/bin/bash
#
# Start Stop script for the Apache
#
# chkconfig: 35 99 1
# description: Apache is a WWW server
export PATH="/usr/local/apache/bin:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin"
LOCKFILE=/var/lock/subsys/httpd
APACHECTL=/usr/local/apache2/bin/apachectl
#---------------------------------
# ネットワークが利用可能かチェック
#---------------------------------
. /etc/sysconfig/network
if [ ${NETWORKING} = "no" ]; then
exit 0
fi
case "$1" in
start)
if [ -x $APACHECTL ]; then
if [ -f $LOCKFILE ]; then
echo "apache already started !!"
else
touch $LOCKFILE
echo "Starting Apache Please wait : "
$APACHECTL startssl
sleep 3
fi
else
echo "apachectl Not Found"
fi
;;
stop)
if [ -x $APACHECTL ]; then
if [ -f $LOCKFILE ]; then
echo "Shutting down Apache: "
$APACHECTL stop
rm -f $LOCKFILE
sleep 3
else
echo "apache already Stopped!!"
fi
else
echo "apachectl Not Found"
fi
;;
*)
echo "Usage: httpd {start|stop}" 1>&2
exit 1
esac
exit 0
---
ここで注意すべきは,通常の起動の場合とapachectlのオプションが違うことです。
$APACHECTL startssl
になっていることに注意してください。