ネットワークサーバの構築のページに戻る

Apache-SSLによるhttpsdサーバの構築

Apacheに暗号通信機能を追加するためのApache-SSLのパッチを当てたサーバです。 Apache-SSLは SSL ライブラリを呼び出しますが、このSSLライブラリには ここではOpenSSLを使います(SSLeayでも可能と思います) (このOpenSSLには暗号通信のキーの作成などにも使います)

mod_sslを使う場合には、以下の手順や設定が 異なりますのでご注意ください


インストール

OpenSSLのインストール

OpenSSLはSSLのライブラリです。SSL 機能付き Apache は SSL 通信を行う際に このライブラリを使って、暗号化、復号を行います。

makeするには以下のコマンドを実行します。

% tar zxvf openssl-0.9.6.tar.gz
% cd cd openssl-0.9.6
% ./config
% make
% make test
# make install

ApacheとApache-SSLのインストール

ApacheをSSL対応にするために Apache-SSLをパッチとしてあてて、 makeする
% tar zxvf apache_1.3.12.tar.gz
% cd apache_1.3.12
% tar zxvf apache_1.3.12+ssl_1.39.tar.gz
% patch < SSLpatch
% configure --prefix=/usr/local/apache_ssl
ここでapache_1.3.12/src/Configurationを以下のように編集する
KEYNOTE_BASE=/usr/local/ssl/KeyNote
SSL_BASE=/usr/local/ssl
SSL_INCLUDE= -I$(SSL_BASE)/include
SSL_CFLAGS= -DAPACHE_SSL
SSL_LIB_DIR= $(SSL_BASE)/lib
SSL_LIBS= -L$(SSL_LIB_DIR) -lssl -lcrypto
SSL_APP_DIR= $(SSL_BASE)/bin
SSL_APP=/usr/local/ssl/bin/openssl
この後コンパイルする
% cd apache_1.3.12/src
% ./Configure
% make
インストールする
# mkdir /usr/local/apache_ssl
# sh
# for i in cgi-bin conf htdocs icons logs
> do cp -r $i /usr/local/apache_ssl
> done
# exit
# mkdir /usr/local/apache_ssl/bin
# cp src/httpsd /usr/local/apache_ssl/bin
# cp src/modules/ssl/gcache /usr/local/apache_ssl/bin
# cp conf/httpd.conf-dist /usr/local/apache_ssl/conf/httpd.conf
# cat SSLconf/conf/httpd.conf >> /usr/local/apache_ssl/conf/httpd.conf
# mkdir /usr/local/apache_ssl/certs
/usr/local/apache_ssl/conf/httpd.confの編集
ここではとくにSSLのdirectiveについて、記述する。 directiveについては、htdocs/manual/の下にあります。 日本語マニュアルは こちらを参照してください。

変更前変更後
"@@ServerRoot@@"(数箇所あるのですべて書き換える) "/usr/local/apache-ssl"
ServerAdmin ServerAdmin root@kitakyu-techno-ctr.co.jp
ServerName ServerName hibiki.kitakyu-techno-ctr.co.jp
(最初の)Port 80#Port 80(コメントアウト)(後の方にPort 8887があるので)
User benコメントアウト
Group benコメントアウト
Port 8887
Listen 8887
Listen 8888
Port 443
Listen 443
DocumentRoot... DocumentRoot /usr/local/apache_ssl/htdocs
SSLCACertificatePath... SSLCACertificatePath /usr/local/apache_ssl/certs
SSLCertificateFile... SSLCertificateFile /usr/local/apache_ssl/certs/httpsd.pem
SSLCacheServerPath... SSLCacheServerPath /usr/local/apache_ssl/bin/gcache
AllowOverride None(何箇所かある:.htaccessでの制限に必要) AllowOverride AuthConfig Limit

Certificate Fileの作成

ここでは自己署名型の証明書を使う例を説明します。

PEM形式の認証ファイルを作成し、それをhttpd.conf のSSLCertificateFile で指定した位置にそれを置きます。

# cd /usr/local/apache_ssl/certs
# /usr/local/ssl/bin/openssl req -new -x509 -nodes -out httpsd.pem -keyout httpsd.pem
...
...
...
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Fukuoka
Locality Name (eg, city) []:Kitakyushu
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Kitakyushu Technology
 Center
Organizational Unit Name (eg, section) []:Kitakyushu Industrial Information Cent
er
Common Name (eg, YOUR name) []:hibiki
Email Address []:root@kitakyu-techno-ctr.co.jp
#

これによって httpsd.pem がカレントディレクトリにできます。 このファイルは秘密キーと証明書が含まれています。 有効期限などが含まれていますし、安全のためにも定期的に このファイルは上記のコマンドで作り直す方がよいと思われます。

起動

/usr/local/apache_ssl/bin/httpsd -f /usr/local/apache_ssl/conf/httpd.conf
あるいはapachectlの内容が HTTPD='/usr/local/apache_ssl/bin/httpsd' となっていることを確認してから、以下のように起動する
/usr/local/apache_ssl/bin/apachectl start

付録

クライアント認証を行うためのhttpd.confの設定

以上の設定を行って、このサーバにアクセスするブラウザに クライアントの証明書を組み込めばアクセスできるようになります。


参照リンク


「サーバの構築」のページへ戻る ホームへ戻る