[apache2のインストール]
Synapticを起動し、apache2をインストールした。
[apache2の設定]
複数のバーチャルホストを名前ベースでホスティング
各バーチャルホストの設定ファイルを作成する。
$ sudo vi /etc/apache2/sites-available/www1
# 以下のような設定を入力
<VirtualHost *:80>
ServerName www1.mylabo.lan
ServerAdmin admin@mylabo.lan
DocumentRoot /home/www1/Documents
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/www1/Documents/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order deny,allow
Deny from all
Allow from all
</Directory>
ScriptAlias /cgi-bin/ /home/www1/cgi-bin/
<Directory "/home/www1/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order deny,allow
Deny from all
Allow from 127.0.0.1/255.0.0.0 192.168.1.0/255.255.255.0
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
$ sudo vi /etc/apache2/sites-available/www2
# 以下のような設定を入力
<VirtualHost *:80>
ServerName www2.mylabo.lan
ServerAdmin admin@mylabo.lan
DocumentRoot /home/www2/Documents
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/www2/Documents/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order deny,allow
Deny from all
Allow from all
</Directory>
ScriptAlias /cgi-bin/ /home/www2/cgi-bin/
<Directory "/home/www2/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order deny,allow
Deny from all
Allow from 127.0.0.1/255.0.0.0 192.168.1.0/255.255.255.0
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
上記の2つのバーチャルホストを有効にした後、apache2に設定をリロードする。
sudo a2ensite www1 sudo a2ensite www2 sudo service apache2 reload
デフォルトのバーチャルホストを無効にするような場合は以下のようにする。
sudo a2dissite default sudo service apache2 reload
HTTPS接続
適当なディレクトリに自己認証局で作成したサーバ証明書と秘密鍵をコピーしておく。
$ sudo mkdir /etc/apache2/certs $ sudo cp /etc/ssl/CA/certs/www.mylabo.lan/server.crt /etc/apache2/certs/ $ sudo cp /etc/ssl/CA/certs/www.mylabo.lan/newkey.pem /etc/apache2/certs/privkey.pem
パスフレーズ保護を解除していない秘密鍵を使う場合は、Apache2の起動時にパスフレーズが自動的に入力されるようにする。まずパスフレーズ要求に対して実行するスクリプトファイルを作成する。
$ sudo vi /etc/apache2/pp-filter # 以下の内容を入力 #!/bin/bash echo "パスフレーズ"
スクリプトファイルのパーミッションを700に変更する。
$ sudo chmod 700 /etc/apache2/pp-filter
SSLに関するApache2の設定ファイルを変更する。
$ sudo vi /etc/apache2/mods-available/ssl.conf # 以下のように変更 SSLPassPhraseDialog exec:/etc/apache2/pp-filter
SSL/TLS接続に必要なモジュールを有効化する。
$ sudo a2enmod ssl
ここではHTTPS接続もバーチャルホストで提供するのでバーチャルホスト名を設定しておく。
$ sudo vi /etc/apache2/ports.conf # バーチャルホスト名を追加 # <IfModule mod_ssl.c>ディレクティブ内に追加した NameVirtualHost *:443
バーチャルホストの設定ファイルを作成する。
$ sudo vi /etc/apache2/sites-available/www
# 以下のような設定を入力
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName www.mylabo.lan
ServerAdmin admin@mylabo.lan
DocumentRoot /home/www/Documents
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/www/Documents/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order deny,allow
Deny from all
Allow from all
</Directory>
ScriptAlias /cgi-bin/ /home/www/cgi-bin/
<Directory "/home/www/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order deny,allow
Deny from all
Allow from 127.0.0.1/255.0.0.0 192.168.1.0/255.255.255.0
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/certs/server.crt
SSLCertificateKeyFile /etc/apache2/certs/privkey.pem
</VirtualHost>
</IfModule>
クライアント側にサーバ証明書または自己認証局のルート証明書をインポートし、サーバ証明書の作成時に入力した固有名でアクセスすると、警告なしに接続されるようになる。
余談だが、自己認証局のルート証明書を適当なディレクトリにコピーし、上記のバーチャルホスト以下のように設定するとクライアント証明書によるユーザー認証もできるようだ。もちろんクライアント証明書の発行が必要となる。
$ sudo cp /etc/ssl/CA/cacert.crt /etc/apache2/certs/ $ sudo vi /etc/apache2/sites-available/www # 以下の設定を追加 SSLCACertificateFile /etc/apache2/certs/cacert.crt SSLVerifyClient require SSLVerifyDepth 1
コメントを残す