web-dev-qa-db-ja.com

HTTP + HTTPSを介して複数のサブドメインにサービスを提供するようにApacheを構成します

2つのパブリックIPv4アドレスを持つISPでホストされている仮想サーバーがあります。 Apacheでいくつかのサブドメイン(2つ以上)を実行し、HTTPとHTTPSの両方を介してそれらを提供したいと思います。 SSL証明書は、*。mydomain.comのワイルドカード証明書です。

この方法でDebianでApacheを設定しようとしましたが、失敗しました。仮想ホストが受け入れられないか、SSLエラーが発生します。 (Apacheは、証明書を提供する前に要求されたホスト名を認識しませんが、証明書には可能なすべてのサブドメインが含まれていることを知っています)

DebianのApache構成レイアウトで最適に機能するhttpd.confの作成にご協力ください。

すべての詳細:

  • ApacheはHTTPの場合は*:80、HTTPSの場合は*:443をリッスンします
  • すべてのNameVirtualHosts、エイリアスなどは、両方のポート/プロトコルに対して一度に定義する必要があります
  • デフォルトのmydomain.comとwww.mydomain.comは/ var/wwwにルートする必要があります
  • 特別に構成できるfoo.mydomain.comやbar.mydomain.comなどの追加のNameVirtualHosts。別のDocumentRootを持つ
3
Apache User

Apachecanは、 TLS Server Name Indication を使用して、要求されたホスト名を確認できます。

ただし、これには比較的最近のWebブラウザが必要です。たとえば、WindowsでInternet Explorerを使用している場合XPは、追加のドメインの証明書の不一致メッセージを受信します。(ありがたいことに、WinXP/IEユーザーはほぼ絶滅しています。) ウィキペディアの記事 リストがあり、 ここにテストページがあります 不明な場合。

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www
    <Directory /var/www/>
        Options Indexes FollowSymlinks MultiViews
    </Directory>
</VirtualHost>

NameVirtualHost *:443

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www
    <Directory /var/www/>
        Options Indexes FollowSymlinks MultiViews
    </Directory>

    SSLEngine on
    SSLCertificateFile /etc/ssl/private/example.com.pem
</VirtualHost>

追加の(サブ)ドメイン:

<VirtualHost *:80>
    ServerName foo.example.com
    DocumentRoot /sites/foo
</VirtualHost>

<VirtualHost *:443>
    ServerName foo.example.com
    DocumentRoot /sites/foo

    SSLEngine on
    SSLCertificateFile /etc/ssl/private/foo.example.com.pem
</VirtualHost>
5
user1686