ApacheのSSL設定とバーチャルホストについて

Linuxでウェブサーバを構築する場合、やはりApacheを使用することが一番多いです。そのApacheの機能でバーチャルホストやSSLの個別の設定については、ネット上に多くの情報があるのですが、この2つの機能を同時に使う場合の設定については、あまり詳しい情報がありませんでした。いろいろ手探りで設定を変えてみてうまく起動したバーチャルホストとSSLの設定をまとめておきます。

バーチャルホストの設定内容

バーチャルホストでの設定内容は、以下のようにします。ここでも、バーチャルホストの「IPベース」と「NAMEベース」を設定し、さらにSSLの設定を追加します。バーチャルホストとSSLの設定で使用するIPアドレスとホスト名の組合せは、以下のとおりです。

ホスト名 IPアドレス ポート番号 SSL
www1.hoge.co.jp 192.168.0.1 80 なし
www2.hoge.co.jp 192.168.0.2 80 なし
www2.hoge.co.jp 192.168.0.2 443 あり
www3.hoge.co.jp 192.168.0.2 80 なし

バーチャルホストとSSLの設定の考え方は、SSLの設定をポートの指定を含んだ「IPベース」のバーチャルホストの設定と考えます。設定ファイル「httpd.conf」に、次のような設定をします。

<VirtualHost 192.186.0.1:80>
	ServerName www1.hoge.co.jp
	DocumentRoot /var/www/site1
	ServerAdmin webmaster@www1.hoge.co.jp
	ErrorLog /var/log/apache/site1_error.log
	TransferLog /var/log/apache/site1_access.log
</VirtualHost>
NameVirtualHost 192.168.0.2:80
<VirtualHost 192.168.0.2:80>
	ServerName www2.hoge.co.jp
	DocumentRoot /var/www/site2
	ServerAdmin webmaster@www2.hoge.co.jp
	ErrorLog /var/log/apache/site2_error.log
	TransferLog /var/log/apache/site2_access.log
</VirtualHost>
<VirtualHost 192.168.0.2:80>
	ServerName www3.hoge.co.jp
	DocumentRoot /var/www/site3
	ServerAdmin webmaster@www3.hoge.co.jp
	ErrorLog /var/log/apache/site3_error.log
	TransferLog /var/log/apache/site3_access.log
</VirtualHost>
<VirtualHost 192.168.0.2:443>
	SSLEngine on
	SSLCertificateFile /etc/apache2/ssl/cacert.crt
	SSLCertificateKeyFile /etc/apache2/ssl/private/cakey.pem
	ServerName www2.hoge.co.jp
	ServerAdmin webmaster@www2.hoge.co.jp
	DocumentRoot /var/www/ssl-site2
	ErrorLog /var/log/apache2/ssl-site2_error.log
	TransferLog /var/log/apache2/ssl-site2_access.log
</VirtualHost>

SSLで使用する証明書の作成

Debian/etchになってからSSLの設定で使う証明書を作成するコマンド「apache2-ssl-certificate」がなくなり、証明書を自分で作らなければなりません。その時の手順を簡単にまとめました。

openssl設定ファイルの編集

opensslの設定ファイルは、「/etc/ssl/openssl.cnf」です。この設定ファイルに、Netscape用の設定を追加します。設定ファイル内のセッション[usr_cert]に「nsCertType=server」、セッション[v3_ca]に「nsCertType=sslCA,emailCA」を追記します。

証明書作成用シェルの実行

ディレクトリ「/usr/lib/ssl/misc/」に移動し、「./CA.sh -newca」を実行します。実行後、質問事項に答えていきます。答える必要があるのは、以下のとおりです。後の質問は、ブランクでよいようです。

Enter PEM pass phrase:
パスフレーズを入力します。次の質問「Verifying – Enter PEM pass phrase:」にも同じパスフレーズを入力します。
Country Name (2 letter code) [AU]:
日本を表す「JP」を入力します。
State or Province Name (full name) [Some-State]:
都道府県名を入力します。例えば、「Osaka」など。
Locality Name (eg, city) []:
市町村名を設定します。
Common Name (eg, YOUR name) []:
SSL設定時に指定した「ServerName」を入力します。ここで設定を間違えるとSSLエラーが出つづけます。
Enter pass phrase for ./demoCA/private/./cakey.pem:
最初に入力したパスフレーズを再度入力します。

処理が終わると、「/usr/lib/ssl/misc/demoCA/cacert.pem」「/usr/lib/ssl/misc/demoCA/private/cakey.pem」が作成されます。

パスフレーズの削除

作成したSSL用の証明書のパスフレーズを削除します。以下のコマンドを実行します。

openssl rsa -in ./demoCA/private/cakey.pem -out ./demoCA/private/cakey.pem

実行時には、パスフレーズの入力を求められるので、「CA.sh」実行時に入力したパスフレーズを入力します。パスフレーズ削除後、Apacheの設定ファイルにあるファイル「SSLCertificateKeyFile /etc/apache2/ssl/private/cakey.pem」として使用します。

SSL用の証明書の作成

以下のコマンドを実行し、先ほど作成した証明書「/usr/lib/ssl/misc/demoCA/cacert.pem」からSSL用のX.509公開鍵証明書「/usr/lib/ssl/misc/demoCA/cacert.crt」を作成します。

openssl x509 -in ./demoCA/cacert.pem -out ./demoCA/cacert.crt

SSL用の公開鍵証明書を作成後、Apacheの設定ファイルにあるファイル「SSLCertificateFile /etc/apache2/ssl/cacert.crt」として使用します。

ブラウザ用の証明書作成

次のコマンドを実行し、ブラウザインストール用の証明書ファイル「/usr/lib/ssl/misc/demoCA/ca.der」を作成します。

openssl x509 -inform pem -in ./demoCA/cacert.pem -outform der -out ./demoCA/ca.der

作成されたファイルは、クライアントのウェブブラウザにインストールして使用します。

スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする