HTTP + HTTPS経由で複数のサブドメインを提供するようにApacheを構成する

HTTP + HTTPS経由で複数のサブドメインを提供するようにApacheを構成する

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

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

Debian の Apache 設定レイアウトに最適に動作する httpd.conf の作成にご協力ください。

詳細:

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

答え1

アパッチできる要求されたホスト名を確認するには、TLS サーバー名の表示

ただし、これには比較的新しいウェブブラウザが必要です。たとえば、Windows XPでInternet Explorerを使用している場合は、追加のドメインに対して証明書の不一致メッセージが表示されます。(ありがたいことに、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>

関連情報