VirtualHost + SSL

昨日の続きで、名前ベースのバーチャルホストで SSL が使えるようにします。

バーチャルホストの設定ファイルを記述

ポート 80(http) と 443(https) それぞれに対して、バーチャルホストを設定します。http 用と https 用とで、内容が同じになる部分を二箇所に書くのはイヤなので、http/https で設定が異なる部分と、共通する部分を分けて、それぞれ以下のファイルに記述します。

  • conf.d/vhosts/vhosts.conf バーチャルホストの設定
  • conf.d/vhosts/ssl.part バーチャルホストのSSL設定
  • conf.d/vhosts/aaa.bbb.ccc.part サーバ aaa.bbb.ccc の http/https 共通部分の設定
  • conf.d/vhosts/ddd.eee.fff.part サーバ ddd.eee.fff の http/https 共通部分の設定
conf.d/vhosts/vhosts.conf
# ポート 80 と 443 に対するアクセスを名前ベースのバーチャルホストで処理する
NameVirtualHost *:80
NameVirtualHost *:443


# http://aaa.bbb.ccc/ 用の設定
<VirtualHost *:80>
  Include conf.d/vhosts/aaa.bbb.ccc.part
  ErrorLog logs/aaa.bbb.ccc.error_log
  CustomLog logs/aaa.bbb.ccc.access_log combined
</VirtualHost>

# https://aaa.bbb.ccc/ 用の設定
<VirtualHost *:443>
  Include conf.d/vhosts/ssl.part
  Include conf.d/vhosts/aaa.bbb.ccc.part

  ErrorLog logs/aaa.bbb.ccc.error_log
  CustomLog logs/aaa.bbb.ccc.access_log combined
  CustomLog logs/aaa.bbb.ccc.ssl_request_log ssl_request
</VirtualHost>


# http://ddd.eee.fff/用の設定
<VirtualHost *:80>
  Include conf.d/vhosts/ddd.eee.fff.part
  ErrorLog logs/ddd.eee.fff.error_log
  CustomLog logs/ddd.eee.fff.access_log combined
</VirtualHost>

# https://ddd.eee.fff/ 用の設定
<VirtualHost *:443>
  Include conf.d/vhosts/ssl.part
  Include conf.d/vhosts/ddd.eee.fff.part

  ErrorLog logs/ddd.eee.fff.error_log
  CustomLog logs/ddd.eee.fff.access_log combined
  CustomLog logs/ddd.eee.fff.ssl_request_log ssl_request
</VirtualHost>
conf.d/vhosts/ssl.part

<VirtualHost> ディレクティブ内に含める SSL の設定です。conf.d/ssl.conf からコピーして作成します。

# SSL configurations
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key

<Files ~ "\.(cgi|shtml|phtml|php3?)$">
	SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
	SSLOptions +StdEnvVars
</Directory>

SetEnvIf User-Agent ".*MSIE.*" \
	nokeepalive ssl-unclean-shutdown \
 	downgrade-1.0 force-response-1.0

LogFormat "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" ssl_request
conf.d/vhosts/aaa.bbb.ccc.part

サーバ aaa.bbb.ccc の設定です。http/https で共通の設定です。
ServerName を aaa.bbb.ccc にします。

ServerName aaa.bbb.ccc
DocumentRoot /home/vhosts/aaa.bbb.ccc
conf.d/vhosts/ddd.eee.fff.part

サーバ ddd.eee.fff の設定です。http/https で共通の設定です。
ServerName を ddd.eee.fff にします。

ServerName ddd.eee.fff
DocumentRoot /home/vhosts/ddd.eee.fff

もともとの ssl 設定を無効にする

ssl.conf 内の <VirtualHost _default_:443>〜</VirtualHost> をコメントアウトします。

vhosts.conf を httpd.conf からインクルードする

httpd.conf の最終行に以下を追加

Include conf.d/vhosts/vhosts.conf