Server Name Identification(SNI)は、Secure Socket Layer(SSL)およびTransportLayer Security(TLS)プロトコルの拡張であり、単一の一意のインターネットプロトコル(IP)アドレスで複数のSSL証明書をホストできるようにします。この記事では、SNIを使用してApache®で複数のSSL証明書をホストする方法について説明します。
SNIを使用するには、サーバーが次の要件を満たしている必要があります。
- Apachev2.2.12以降
- OpenSSL®v0.9.8j以降
- mod_sslをインストールする必要があります
次のオペレーティングシステムは、追加の変更なしでSNIをサポートします。
- RedHat®EnterpriseLinux®(RHEL)6以降
- Fedora®10以降
- CentOS®6
- Debian®6以降
- Ubuntu®10.04以降
次のオペレーティングシステムでは、Apache、OpenSSL、およびmod_sslを適切なバージョンでコンパイルする必要があります。
- Red Hat Enterprise Linux 5
- Centos 5
mod_sslがインストールされていることを確認してください
SNIを使用する前に、次のコマンドを実行してmod_sslがインストールされていることを確認してください。
RHEL、CentOS、Fedora
yum list installed | grep mod_ssl
DebianおよびUbuntuオペレーティングシステム
dpkg -s apache2.2-common
mod_sslがインストールされていない場合は、次のコマンドを使用してインストールします。
RHEL、CentOS、Fedora
yum install mod_ssl
DebianおよびUbuntuオペレーティングシステム
DebianおよびUbuntuオペレーティングシステムの場合、次のコマンドを使用してmod_sslをインストールします。
apt-get install apache2.2-common
次に、a2enmod ssl; /etc/init.d/apache2 reload
。
ルートApache構成ファイル( apache2.conf )に次の行を追加します またはhttpd.conf ):
# Ensure that Apache listens on port 443
Listen 443
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:443
# Accept connections for these vhosts from non-SNI clients
SSLStrictSNIVHostCheck off
各サイトのvhost構成ファイルで、仮想ホスト構成を追加する必要があります。次の例のようになります。
最初の仮想ホスト:
<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
</Virtual Host>
2番目の仮想ホスト:
<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
</Virtual Host>
次のコマンドを使用して、自己署名証明書を使用して構成をテストできます。
openssl req -new -nodes -keyout mykey.key -out mycert.cer -days 3650 -x509
共通名でドメイン名を指定します セクションをクリックしてから、Apacheを再起動します。
SNIはほとんどのブラウザでサポートされていますが、InternetExplorer®6やWindows®XP®ブラウザなどの古いブラウザはSNIをサポートしていません。
デスクトップブラウザ
-
InternetExplorer7以降
-
Firefox®2以降
-
TLS1.1が有効になっているOpera8
-
GoogleChrome®:
- Chrome6以降のWindowsXPでサポート
- Vista以降でデフォルトでサポートされています
- Chromeバージョン5.0.342.0以降のOSX10.5.7でサポート
-
Chromium®11.0.696.28以降
-
Safari 2.1以降(OS X10.5.6以降またはWindowsVista以降が必要です)。
注: WindowsXP上のInternetExplorerのバージョンはSNIをサポートしていません。
モバイルブラウザ
- iOS4.0以降のモバイルSafari
- Android 3.0(Honeycomb)以降
- WindowsPhone7以降
サポートされていないブラウザは、Apacheがロードする最初の仮想ホストのSSL証明書をロードします。代わりに、Apache構成ファイル( apache2.conf )に次の行を追加することで、403エラーを表示できます。 、または httpd.conf ):
SSLStrictSNIVHostCheck on