Apache confの同じVirtualHostでHTTPとHTTPSを定義できますか?


13

サイトがHTTPS上でも実行されるように、複製したくないVirtualHost定義がかなりあります。

私がやりたいことは次のとおりです。

<VirtualHost *>
    ServerName example.com

    <If port=443>
        SSLEngine on
        SSLCertificateFile ...
        SSLCertificateKeyFile ...
        SSLCertificateChainFile ...
    </If>

    (other config)

</VirtualHost>

これを行う方法はありますか?
構成を複製しない他の方法がありませんか?

回答:


12

Apache(2.2)の現在の安定バージョンにはその機能はありませんが、2.4にはIFディレクティブがあります。

現時点では2つのVirtualHostを作成する必要がありますが、環境変数またはApacheグローバル変数を使用していくつかの設定を行い、それを仮想ホスト構成で使用できます(たとえば、ドキュメントルートを設定します)。このように変更したい場合は、1行の変更でそれを行うことができます。

もちろん、includeを使用して次のようなことを行うことができます。

<VirtualHost *:80>
        include /etc/apache2/vhost.conf.d/site1
</VirtualHost>

<VirtualHost *:443>
        include /etc/apache2/vhost.conf.d/site1
        include /etc/apache2/vhost.conf.d/site1-ssl
</VirtualHost>

ps:SNIは、IPv6適応の数年前に主流になります。サポートされているOSを使用していることを前提として、すべてのメインストリームブラウザーが既にサポートしています。

編集:fooquencyが発見したように、あなたはSSLエンジンをIfブロックに置くことができないので、私の答えは間違っています。


8
を入力しようとするSSLEngine Onと、<If>が返されるSSLEngine not allowed hereので、この回答の冒頭で提案されているユースケースは、残念ながら可能ではないようです。これは、「ディレクトリコンテキストをサポートするディレクティブのみがこの構成セクション内で使用できる」という要件があるためと思われます。(REF)SSLEngineあるserver config, virtual host (REF)ディレクトリ、ではありません。
fooquency

3

いいえ。ほとんどのものをグローバル構成に移動し、VirtualHostで継承できます。


1
残念ながら、いくつかのVirtualHostsがあり、それぞれが異なる構成を持ち、HTTPとHTTPSを介して作業する必要がほとんどあります。
ジェイク

1
この答えは役に立たないが、それが唯一の正しいものです。吸わないWebサーバーに移動してください。:)
intgr


2

SSL仮想ホストの場合、2番目のポートalaを使用する必要があります

<VirtualHost *:443>
    ServerName abc.com
</VirtualHost>
<VirtualHost *:4443>
    Servername def.com
</VirtualHost>

または、個別のIPを使用する必要があります

<VirtualHost 192.168.0.1:443>
    ServerName abc.com
</VirtualHost>
<VirtualHost 192.168.0.2:443>
    Servername def.com
</VirtualHost>

Apache SSLのドキュメントhttp://httpd.apache.org/docs/2.0/ssl/ssl_faq.htmlに実際に非常に良い説明があります。

「名前ベース/非IPベースの仮想ホストでSSLを使用できないのはなぜですか」を検索します。


2
:しかし、将来のための本に注意してくださいen.wikipedia.org/wiki/Server_Name_Indication
mattdm

皮肉なことに、SNIが大部分の仮想ホスティングサイトで安全に使用できるように広く受け入れられるまでには、おそらくIPv6は一般的であり、無関係になります。
jgoldschrafe

4
@jgoldschrafeこんにちは2010年、ここで話すのは未来です!最近のカニウスは、非SNIブラウザが世界中で2%未満であることを示しています。最初の世界からそれはおそらくはるかに少ないです。IPv4はまだ健在です:)
kubanczyk

2
@kubanczykわかった!:)
jgoldschrafe

@jgoldschrafe IPv6であっても、IPは主にルーティング用であり、その方法で管理する方が簡単なので、アドレスブロックを単一のマシンに割り当てるよりも、SNIを優先します。
バクサウ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.