HTTPSのハンドシェイクは、NameVirtualHostの解決よりも前に行われるため、基本的に1つのIPアドレスでは1つのドメインしかSSL設定できません。
さくらインターネットなどで、固定IPを追加してもらった際の設定方法を簡単に紹介します。サーバはUbuntu 10.04です。
もともと192.0.2.11を持っていて、新たに198.51.100.16~198.51.100.23(8個)を追加するとします。
networkに追加
以下のようにすると、IPアドレスを追加できます。
$ ifconfig eth0:0 198.51.100.16
$ ifconfig eth0:1 198.51.100.17
$ ifconfig eth0:2 198.51.100.18
$ (...略...)
$ ifconfig eth0:7 198.51.100.23
ただしこれは実験用。
ifconfigコマンドで設定しても、再起動時に消えてしまうので、以下のように /etc/network/interfaces に追記して
# これは最初から書いてあるはず
auto eth0
iface eth0 inet static
address 192.0.2.11
netmask 255.255.255.128
gateway 192.0.2.129
# ここから追加
auto eth0:0
iface eth0:0 inet static
address 198.51.100.16
netmask 255.255.255.0
auto eth0:1
iface eth0:1 inet static
address 198.51.100.17
netmask 255.255.255.0
# ...略...
auto eth0:7
iface eth0:7 inet static
address 198.51.100.23
netmask 255.255.255.0
以下のコマンドを実行します。
$ /etc/init.d/networking restart
記述を間違えてSSH接続できなくなった、なんてことがないようにご注意を。
ApacheでListen
ApacheのListenするIPを明示的に指定している場合は、/etc/apache2/ports.confなどで、以下のようにListenしてあげます。
先にnetwork/interfacesの設定をしておかないと、「Unable to bind address」とエラーになるので注意。
Listen 198.51.100.16:80
Listen 198.51.100.16:443
Listen 198.51.100.17:80
Listen 198.51.100.17:443
# ...略...
VirtualHostを書く
あとは普段通りにVirtualHostを書きます。IPは個別に明記します。
<VirtualHost 198.51.100.16:443>
# 略
</VirtualHost>
Apacheを再起動
IPを変えたときは、reloadではなくrestartしてあげましょう。
$ /etc/init.d/apache2 restart
おまけ
IPアドレスを追加できない場合でも、以下のような方法でマルチドメインのSSLを実現することができます。
- Apache 2.2 + SNIを使う
- 別ポートを使う
- マルチドメイン証明書を使う
- 証明書エラー(ドメイン名不一致)を無視する
ただし、1は古いブラウザが非対応、2は明示的にポートを指定する必要が出てくるので、商用サービスではちょっと使えません。
3は検討の余地がありますが、後から追加できないし、会計処理的にも面倒が発生しそうです。
4は一番簡単ですね。オレオレ証明書を使うならこれで良いです。決してパブリックなサービスではやらないでください。