Apache NAMEベースのバーチャルホストにそれぞれSSLを設定することは出来ない
NAMEベースのバーチャルホストにそれぞれSSLを設定することが出来ない
NameVirtualHost *:443
<VirtualHost *:443>
DocumentRoot /var/www/blog
ServerName blog.myserver.com
SSLEnable
SSLCertificateFile /usr/local/apache/conf/ssl.crt/blog.myserver.com.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/blog.myserver.com.key
……
</VirtualHost>
<VirtualHost *:443>
DocumentRoot /var/www/sns
ServerName sns.myserver.com
SSLEnable
SSLCertificateFile /usr/local/apache/conf/ssl.crt/sns.myserver.com.crt
SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/sns.myserver.com.key
……
</VirtualHost>
Apacheを再起動して「https://blog.myserver.com」にアクセスするとSSL通信が出来る。
しかし「https://sns.myserver.com」にアクセスすると、blog.myserver.com.crtの証明書が読み込まれてしまい、SSL通信に失敗する。
解決方法
- 各サイト毎にIPアドレスを用意する
- ワイルドカード証明書を使う
- subjectAltNameを使う
- Server Name Indication (SNI)を使う
等があるそうです。
とりあえず「各サイト毎にIPアドレスを用意する」で乗り切りましたが、他の方法も是非試してみたいです。
関連エントリーはこちら。