メイン

Apache アーカイブ

2007年06月12日

apacheのベーシック認証をLDAP対応にする。

組織にLDAPサーバある場合はベーシック認証よりもLDAPサーバで認証したほうがよい。
redhat9にてapacheをLDAP対応にし,ベーシック認証をLDAPで行うことにした。
apacheをソースから入れる場合,バージョン2.2系列はうまくいかなかったので2.0系列で行った。
ちなみにRHEL3でもうまくいった。


1.db-4.5.20のインストール

まず初めにBerkeleyDBのインストールを行う。
これは,OpenLDAPのデータベースとして機能するので必要。

以下のサイトからダウンロードしましょう。
http://www.oracle.com/database/berkeley-db/index.html

今回は現時点で最新のBerkeleyDB-4.5.20を使うことにした。

# tar zxvf db-4.5.20.tar.gz -C /usr/local/src
# cd /usr/local/src/db-4.5.20/build_unix
# ../dist/configure --prefix=/usr/local/BerkeleyDB-4.5.20
# make
# make install

わかりやすくシンボリックリンクを作成しましょう。

# ln -s /usr/local/BerkeleyDB-4.5.20 /usr/local/bdb


2.OpenLDAPのインストール

以下のサイトからダウンロードしましょう。
http://www.openldap.org/

今回はopenldap-2.2.30を使いました。
これはLDAPサーバとして2.2系列を使っているので念のためバージョンを合わせておいた。

はじめにBerkeleyDBのインストール先を環境変数を設定して教えてあげます。

# export LDFLAGS="-L/usr/local/bdb/lib"
# export CPPFLAGS="-I/usr/local/bdb/include"
# export LD_LIBRARY_PATH=/usr/local/bdb/lib:$LD_LIBRARY_PATH

インストール作業の開始です。

# ./configure --prefix /usr/local/openldap-2.2.30 \
--enable-crypt --enable-ldbm --enable-wrappers --with-cyrus-sasl=no
# make depend
# make
# make install

わかりやすくシンボリックリンクを作成しましょう。

# ln -s /usr/local/openldap-2.2.30 /usr/local/openldap


3.apacheのインストール

apacheを以下のサイトからダウンロードしましょう。
http://httpd.apache.org/

# tar jxvf httpd-2.0.59.tar.bz2 -C /usr/local/src
# cd /usr/local/src/httpd-2.0.59

aprとapr-utilはapache添付のものを使います。

# cd srclib/apr
# ./configure --prefix=/usr/local/apr-httpd
# make
# make install

# cd ../apr-util
# ./configure --prefix=/usr/local/apr-util-httpd --with-apr=/usr/local/apr-httpd \
--with-ldap-include=/usr/local/openldap/include --with-ldap-lib=/usr/local/openldap/lib --with-ldap
# make
# make install

ようやくapacheのインストールです。

# cd /usr/local/src/httpd-2.0.59
# ./configure --prefix=/usr/local/apache-2.0.59 --enable-so --enable-ldap --enable-auth-ldap \
--with-apr=/usr/local/apr-httpd --with-apr-util=/usr/local/apr-util-httpd
# make
# make install

かわりやすくシンボリックリンクを作成しましょう。

# ln -s /usr/local/apache-2.0.59 /usr/local/apache2


以上でインストールが終了しました。
後は起動スクリプトを用意し,httpd.confなどコンフィグファイルを調整して起動。

httpd.confに以下のような記述をするとLDAPサーバで認証してくれます。

#-------------
# LDAP認証例
#-------------

AuthType Basic
AuthName "Secret Page"
AuthLDAPURL ldap://host.domain.com:389/ou=people,dc=domain,dc=com?uid
require valid-user
Order deny,allow
Deny from all
Allow from 192.168.0.0/255.255.255.0

2007年12月10日

apacheをsslに対応させる

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
になっていることに注意してください。

2008年06月11日

apacheのソースからのインストール

httpd-2.0.63.tar.gz

●httpd.confの設定

User apache
Group apache
ServerAdmin name@domain.com
ServerName host.domain.com:80
LanguagePriority ja en ca cs da ... zh-TW


●起動スクリプト

#!/bin/bash
#
# Start Stop script for the Apache-2.0.59
#
# chkconfig: 35 99 1
# description: Apache is a WWW server

export PATH="/usr/local/apache2/bin:/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbi
n:/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-2.0.63 already started !!"
else
touch $LOCKFILE
echo "Starting Apache-2.0.63 Please wait : "
$APACHECTL start
sleep 3
fi
else
echo "apachectl Not Found"
fi
;;
stop)
if [ -x $APACHECTL ]; then
if [ -f $LOCKFILE ]; then
echo "Shutting down Apache-2.0.63: "
$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

このスクリプトを /etc/init.d/httpd として保存して以下のコマンド

# chmod 755 /etc/init.d/httpd
# chkconfig --add httpd

これでOK