- ベストアンサー
ApacheによるバーチャルホストでのSSL通信設定
Apacheでバーチャルホスト設定を行い、1台のサーバで複数のドメインを管理しようとしています。 今は、名前ベースで設定して運用しているため、SSL通信がそれぞれのドメインに対して行えないので、色々調べてみましたが、はっきりと把握できないので、お教え願えればと思います。 1.IPベースのバーチャルホストであればそれぞれのドメインでのSSL通信が可能でしょうか? 2.IPベースの場合、基本設定などは名前ベースと異なるのでしょうか? 3.IPベースのバーチャルホストでSSL通信を行う場合、Apacheは複数起動する必要があるのでしょうか? 4.バーチャルドメインで運用する場合、各ドメイン別のサーバ証明書はどのように設定などするのでしょうか? →単独であればサーバ証明の生成はわかります。 5.上記を実現するために参考になるサイト・書籍などあればお教え下さい。 以上、長文になりましたが、何卒よろしくお願いいたします。 完全な回答でなくとも、ヒントだけでも構いませんので、よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> 証明書(キーペア)を作成するのは、それぞれのドメインで別名のファイルを作成すればいいということでしょうか? > 普通に一つの証明書を作成する手順を、それぞれのドメインで上書きされないようにファイル名を変えて行うということでいいのでしょうか? いえ~すざっつらいと。まぁ、一個作ってはどこかに退避し、一個作っては・・・・やね。どうせ第三者証明を行うにはそれぞれの鍵ファイルなどが要るし。結局、IPベースのバーチャルホストというのは1台をあたかも2台に見せかける事なので、2台のサーバにそれぞれ1台分のSSLを入れるんと同じやって考えれば余裕やよね。 > 1.SSLCertificateFileなどの設定になると思うのですが、正しいでしょうか? > 2.ssl.confの中に、それぞれDNSで設定したバーチャルホストのIPアドレスを使用して > ・・・ > などと記述すればいいということでしょうか? そやね。多分それぞれのServerNameに「:443」は要らんと思うんやけど・・・・まぁ試行錯誤してみてくらはい。できれば出来上がった結果を自己レスで補足などに書いておくと、より良いFAQになるのではないかと。
その他の回答 (1)
- anmochi
- ベストアンサー率65% (1332/2045)
1.はい、できます。 2.さほど変わりません。主な違いは<VirtualHost IPアドレス:ポート>という明示的なIPアドレスの指定に変わるくらいでしょうか。 3.必要ありません。証明書を複数ホストできます。 4.バーチャルホストごと(<VirtualHost>ディレクティブの中)に各ホスト用の証明書を設定してください。1つのバーチャルホストにそれぞれ単独のサーバ証明を生成すれば良いです。 5.う~ん・・・・私は基本的に独学と試行錯誤で行うので分かりません。
補足
ご回答ありがとうございます。 基本的に可能であるということで、色々やってみようと思います。 3.でApache(正確にはhttpd)は一つの起動で良く、証明書をそれぞれで作成することになるようですが、そのあたりで少々疑問があります。 証明書(キーペア)を作成するのは、それぞれのドメインで別名のファイルを作成すればいいということでしょうか? 普通に一つの証明書を作成する手順を、それぞれのドメインで上書きされないようにファイル名を変えて行うということでいいのでしょうか? 一つの証明書なら作成したことがあるのですが、同じサーバで複数の証明書を作成したことがないので、把握し切れてなくてすみません。 また、バーチャルディレクティブ毎に証明設定を行うとお教えいただきましたが、 1.SSLCertificateFileなどの設定になると思うのですが、正しいでしょうか? 2.ssl.confの中に、それぞれDNSで設定したバーチャルホストのIPアドレスを使用して <VirtualHost xxx.xxx.xxx.1:443> DocumentRoot "/var/www/xxx1" ServerName xxx.xx:443 SSLCertificateFile /etc/httpd/conf/server1.pem ・・・・ </VirtualHost> <VirtualHost xxx.xxx.xxx.2:443> DocumentRoot "/var/www/xxx2" ServerName yyy.xx:443 SSLCertificateFile /etc/httpd/conf/server2.pem ・・・・ </VirtualHost> などと記述すればいいということでしょうか? ※当然Apache(httpd.conf)でもIPベースでのバーチャルホストディレクティブの設定が必要だと思いますが。 長文になりましたが、アドバイスいただければと思います。 よろしくお願いいたします。
お礼
正直、RHELサブスクリプションを購入しようかとまで考えていましたが、アドバイスいただいたとおり試行錯誤して何とかできました。 今後も色々わからないことがあったとき、調べてみてそれでもわからないときは、ご指導いただければと思います。 ありがとうございました。
補足
遅くなりました・・・。 アドバイスをいただいたとおり、それぞれのドメインで鍵ファイルと証明書を作成して、ssl.conf内でそれぞれのドメインに対してのIPで、ディレクティブで鍵ファイル・証明書を指定してすんなりいきました。 ssl.comfのServerNameには、「:443」はいらないとのことでしたが、とりあえず初期設定にあった「_default_:443」ディレクティブの設定をまねて、「:443」は一応つけておきました。 ApacheではIPベースでバーチャルホストディレクティブを設定して行いました。 それぞれ、https://で接続して証明書の詳細を見たら、それぞれ設定したようになっていたので、問題ないはずです。