サーバー用にSSL証明書を作成しましたが、特定のWebサイトにのみSSLを使用できます。
たとえば、/var/www
Webフォルダーがたくさんあり、「A」のWebサイトでHTTPSを使用し、その他のWebサイトでHTTPSを使用しないようにします。
設定方法
Apache wiki には SNIを使用した仮想ホストでのSSL に関する素敵なページがあります。それらは、セットアップをステップごとに説明します。ここで主なポイントを書きます。
OpenSSLバージョン0.9.8f以降が必要です。 Ubuntu Hardy Heron(8.04)以降を使用している場合、正しいバージョンを取得できます。さらに、OpenSSLでTLSExtensionsを有効にする必要があります。これは、バージョン0.9.8k(Lucid、10.04)以降のデフォルトのケースです。 ApacheバージョンにはSNIサポートが必要です。 error.log
をご覧ください:
[警告]初期化:名前ベースのSSL仮想ホストは、TLSサーバー名表示サポートのあるクライアントでのみ機能します(RFC 4366)
上記のメッセージが見つかった場合、SNIは有効になっており、以下のメッセージが表示された場合、SNIは組み込まれていません。
名前ベースの仮想ホストをSSLと組み合わせて使用しないでください
デフォルトの構成では、TLSv1がサポートされているプロトコルとして設定されている必要があります。変数SSLProtocol
を探します。設定が見つからない場合は、次を追加できます。
SSLProtocol All -SSLv2
これにより、SSLバージョン2ではなく、SSLおよびTLSのすべての既知のフレーバーのサポートが追加されます。
仮想ホストをセットアップし、SSLサポートを有効にする必要があります(Sudo a2ensite ssl
とApacheの再起動):
<virtualhost *:443>
SSLEngine On
SSLCertificateFile /path/to/your/sslcert
DocumentRoot /path/your/webcontent
</virtualhost>
さらに、Apacheまたはvhost構成でSSLStrictSNIVHostCheck on
を設定します。これで、Apacheを再起動でき、おそらくSSLがサポートされます。ただし、SNIには多くの落とし穴があります。エラーが発生した場合は、error.logを確認してください。何がうまくいかなかったのかをアドバイスするかもしれません。
Apacheドキュメントには、いくつかの SSLサポートに関する詳細な説明 があります。