質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Q&A

解決済

2回答

2566閲覧

名前ベース virtualhostのSSL設定 につきまして(DocumentRootの重複)

bonchan0701

総合スコア7

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

1グッド

1クリップ

投稿2018/03/01 02:45

名前ベース virtualhostのSSL設定を行いたいのですが、DocumentRootが一部重複しているためか、意図通りに動作しません。
実現したいのは、以下のように本ドメイン、サブドメインのどちらも、正しくSSL通信を行うことです。
https://hoge.com
https://m.hoge.com

apacheの設定は以下のとおりです。(一部省略)
DocumentRootが本ドメインは「/var/www/html」、サブドメインはその配下の「/var/www/html/cakephp/m」で設定しています。

Listen 443 NameVirtualHost *:443 <VirtualHost *:443> DocumentRoot "/var/www/html" ServerName hoge.com SSLEngine on SSLCertificateChainFile /etc/httpd/conf/ssl.crt/dvcacert.cer SSLCertificateFile /etc/httpd/conf/ssl.crt/hoge.crt SSLCertificateKeyFile /etc/httpd/conf/ssl.key/hoge.key </VirtualHost> <VirtualHost *:443> DocumentRoot "/var/www/html/cakephp/m" ServerName m.hoge.com:443 SSLEngine on SSLCertificateChainFile /etc/httpd/conf/ssl.crt/m.dvcacert.cer SSLCertificateFile /etc/httpd/conf/ssl.crt/m.hoge.crt SSLCertificateKeyFile /etc/httpd/conf/ssl.key/m.hoge.key </VirtualHost>

発生している問題は、ブラウザで「https://hoge.com」にアクセスすると正常に動作するのですが、「https://m.hoge.com」にアクセスするとブラウザに通信が保護されていない旨が表示されます。
https://m.hoge.com」を開いた状態でブラウザで証明書を確認すると「hoge.com」の証明書が使用されていました。

そこで、「https://m.hoge.com」のVirtualHostの設定を先に記載したらどうなるか試したところ、今度は「https://m.hoge.com」にアクセスすると問題なく動作しましたが、「https://hoge.com」にアクセスするとブラウザに通信が保護されていない旨が表示されました。
https://hoge.com」を開いた状態でブラウザで証明書を確認すると「m.hoge.com」の証明書が使用されていました。

どのように設定すれば、両ドメインでSSL通信が出来るようになりますでしょうか。
Apacheのバージョンは2.2.3です。

kszk311👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

SNI(Server Name Indication)に対応した Apache のバージョンは、2.2.12以降になりますので、お使いのバージョンが、2.2.3 ということは、SNI未対応で、IPベースの複数SSL しか対応していないと思います。

SNI未対応の Apache では、同一IP アドレスの場合、常に最初の SSL 証明書が利用されます。

確認方法ですが、Apache の再起動直後のエラーログを確認してください。

"You should not use name-based virtual hosts in conjunction with SSL!!"
と出ていたら SNI 未対応バージョンです。

"[warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support(RFC4366)"
と出ていたら SNI が使用できるバージョンです。

投稿2018/03/01 03:12

CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

残念ながら、Apache 2.2.3では無理です。

SNIといって、リクエストされたドメインに合わせた証明書を出すSSL拡張があるのですが、これに対応するのはApache 2.2.12以上です(参考)。

投稿2018/03/01 03:03

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2018/03/01 03:11

もちろんこの状況でも、「両ドメインに対して有効な証明書1つを使う」という解決策はあります(Let's encryptでも出せます)。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問