SSLを使用するApache2では、VirtualHostブロックをコピーする必要がありますか?


18

UbuntuのApache2で80のサイトをリッスンしているので、SSLを追加したいと思います。VirtualHostブロック全体をコピーする必要がないように、ポート443でSSLEngineを有効にする方法はありますか?

私がこれを行うとき:

Listen 80
Listen 443
NameVirtualHost *
<VirtualHost *>
  SSLEngine On
  ... a bunch more lines...
</VirtualHost>

ポート80のSSLEngineをオンにします。VirtualHostブロックを1つだけ使用して、ポート443のSSLEngineのみをオンにする方法はありますか?だから私はこのようなことをすることができますか?

Listen 80
Listen 443
NameVirtualHost *
<VirtualHost *>
   <IfPort 443>
      SSLEngine On
   </IfPort>
   ... a bunch of lines I don't want to copy into another VirutalHost block...
</VirtualHost>

回答:


14

1つの仮想ホストにHTTPとHTTPSの両方を実行させることはできません。これらは、個別のプロトコルを処理する別個の仮想ホストであるためです。代わりに、すべての共通構成を別のファイルに入れてから、そのファイルをドメインのSSLおよび非SSLの両方のvhostsに含める必要があります。

最小限の例:

# /etc/apache2/sites-available/example.com
<VirtualHost *:80>
  Include /etc/apache2/domains/example.com
</VirtualHost>

<VirtualHost 192.0.2.1:443>
  SSLEngine On
  SSLCertificateFile /etc/ssl/example.com_crt
  SSLCertificateKeyFile /etc/ssh/example.com_key

  Include /etc/apache2/domains/example.com
</VirtualHost>

# /etc/apache2/domains/example.com
ServerName example.com
ServerAlias www.example.com

ServerAdmin webmaster@example.com
DocumentRoot /home/example/public_html
ErrorLog /home/example/apache/error.log

ファイルがどのように見えるかについての簡単な例を教えてください。VirtualHostラッパーが必要ですか、それともラッパーなしですべての行をそれに移動する必要がありますか?
ダー

1
回答に例を追加しました。
ワンブル

1

stackoverflowに関する別の質問で述べたように(/programming/679383/do-i-have-to-duplicate-the-virtualhost-directives-for-port-80-and-443/52375167# 52375167):

代わりに使用する別のオプションは、Include使用しているMacro(あなたがすべて一つのファイルにそれを保つことができるように)。

最初にマクロモジュールを有効にします。

a2enmod macro

次に、共有されたものをマクロに入れ、use仮想ホストから取得します。

<Macro SharedStuff>
   ServerName example.com
   ServerAdmin example@example.com
   <DocumentRoot /var/www/example>
      ...
   </DocumentRoot>
</Macro>

<VirtualHost *:80>
  Use SharedStuff
</VirtualHost>

<VirtualHost *:443>
  Use SharedStuff

  SSLEngine On
  SSLProtocol All -SSLv2 -SSLv3
  ...
</VirtualHost>

マクロはパラメータを取ることもでき、含まれる他のファイルで定義できます。したがって、Functionsのように少し使用して、Apache構成ファイル全体で多くの重複を保存できます。

詳細はこちらをご覧ください:

https://httpd.apache.org/docs/2.4/mod/mod_macro.html


0

ディレクトリ設定は、<Directory>ブロック以外のブロックに配置でき<VirtualHost>ます。これにより、指定したパス内のみで、すべての仮想ホストにそれらが適用されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.