かつては、IPアドレスとSSLサーバ証明書は1対1である必要があり、1IPアドレス上の複数のサイトでは、ドメイン(Webサイト)ごとに独自の証明書を利用することはできないとされていました。
しかし、Apache v2.2.12、OpenSSL v0.9.8j以降で利用可能な「SNI (Server Name Indication)」と呼ばれる技術を使うことで、1IP上で複数のサーバー証明書を利用することができるようになりました。
SNIが正常に機能するためには、Webサーバーだけでなく、ブラウザもSNIに対応していなければなりません。
主要なブラウザのほとんどがSNI対応済みですが、古いブラウザには一部未対応のものもあります。詳しくは以下のリストを参照してください。
ApacheでSNIを設定するためには、基本となるApacheへのSSLサーバ証明書のインストール方法を理解している必要があります。
詳細は以下のページをご確認ください。
SNIで2つ目以降に追加するサーバー証明書を利用可能にするためには、追加のサーバー証明書を利用するVirtual Host設定をApacheの .confファイルに追加する必要があります。
新たにmy_other_site.confのような名称のファイルを作成し、そこでVirtual Host設定を行うこともできます。その場合は既存のhttpd.confファイルに次の行を追加します。
Virtual Host設定は <VirtualHost *:443> で始めます。
これは、「すべてのIPの443番ポートについてのVirtualHost指定です」という宣言です。IPを特定する指定や、443以外のポートを指定することもできます。
以下の www.yoursite.com、www.yoursite2.com の例のように、それぞれのVirtualHostブロック内で ServerNameを指定し、SSLCertificateFile、SSLCertificateKeyFile、SSLCertificateChainFileでそれぞれの証明書ファイルの位置を指します。
<VirtualHost *:443>
ServerName www.yoursite.com
DocumentRoot /var/www/site
SSLEngine on
SSLCertificateFile /path/to/www_yoursite_com.crt
SSLCertificateKeyFile /path/to/www_yoursite_com.key
SSLCertificateChainFile /path/to/DigiCertCA.crt
</VirtualHost>
<VirtualHost *:443>
ServerName www.yoursite2.com
DocumentRoot /var/www/site2
SSLEngine on
SSLCertificateFile /path/to/www_yoursite2_com.crt
SSLCertificateKeyFile /path/to/www_yoursite2_com.key
SSLCertificateChainFile /path/to/DigiCertCA.crt
</VirtualHost>
.confファイルを保存したら、Apacheを再起動してください。
正しく再起動できない・証明書エラーが発生する場合は、以下のページを参照してください。
SNIでは、利用する証明書数の制限はありません。必要分VirtualHost指定を追加できます。