とりあえずの備忘録

主にパソコンやインターネットに関するメモ

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アドレスを用意する」で乗り切りましたが、他の方法も是非試してみたいです。

関連エントリーはこちら。