質問: CentOS5.7 共有SSL バーチャルドメインへの設定が出来ずに困ってます。 複数のVサイトを立ち上げていて、カート決済の為に、共有のSSLの設定をしておりますが、 httpd.conf ssl.conf virtualhost.confの書き方についてお教えください。 ※現在はmod_sslで通常のドメイン表示は出来ていて、httpd://にすると別なルートフォルダーを見るようになってしまっています。 基本ルート /var/www/html VドメインA /home/A/public_html VドメインB /home/B/public_html 基本的に伺いたいのは、それぞれのドメインへ、同じポートの443を利用して、共有SSLが使えるかどうか? 他のレンタルサーバのVPSでこの設定ができていたので、可能だと思っています。 httpd.confで、NameVirtualHost *:443 Include conf.d/*.confで外部ファイルをインクルード。 ssl.conf で、 抜粋 localhost.crt等は読めていますエラー無し → 添付画像にします。 各ドメインの virtualhost.conf には下記を記入しています。 DocumentRoot /home/A/public_html ServerName A ServerAlias www.A Options FollowSymLinks ExecCGI それぞれSSLEngine onを記入するのか?等、基本的に分かっていませんが、 お教えいただけると助かります。 Apache2.0
回答: コメント欄の Becky_moni さんで答が半分出ているようなものですが、Apache httpd 2.0 では、一つの IP アドレスで複数のドメインを扱う、「名前ベースのバーチャルホスト」では、SSL/TLS は使えません。 その理由は、まず、SSL/TLS の接続直後の処理で、サーバの証明書がやりとりされますが、サーバの証明書が「証明しているもの」は、Web サーバの場合 FQDN、つまり、サイトのホスト名になります。 ところが、名前ベースのバーチャルホストでは、接続した時点では、クライアントがどのバーチャルホストにつなごうとしたのかが分からないため、どの証明書をクライアントに渡すべきか、判断出来きません。SSL/TLS の通信を成立させるための処理が、HTTP プロトコル中で指定される「このホストにつなぐ」という情報の前に行われるために、このような事が発生します。 で、これを解決するために、SNI と呼ばれる SSL/TLS の拡張機能が作られましたが、Apache httpd でこの SNI に対応したのは、2.2.12 以降になります。 Apacheの設定を変更し、単一IPアドレス上で複数のSSLサイトを運用する - builder なので、CentOS 5.7 に付いてくる Apache httpd では対応していないはずです。 あと、SNI 自体はサーバ、ブラウザの共に対応している必要がありますが、古いブラウザや、携帯電話の場合に対応していない可能性があります。ですので、SNI 対応の Web サーバに入れ替えても、ブラウザによってはダメな場合がある、という認識が必要です。