ワイルドカード サブドメインの SSL ファイルを仮想ホストからロードしていますが、2 番目の仮想ホストが最初の仮想ホストの SSL ファイルをロードし、ブラウザーに無効な証明書エラーが表示されます。
設定はこちら
<VirtualHost *:443>
ServerName cert-1.domain.com
ServerAlias cert-1.domain.com,*.net.domain.com
DocumentRoot /home/myuser/public_html
ServerAdmin [email protected]
UseCanonicalName Off
<IfModule mod_suphp.c>
suPHP_UserGroup myuser myuser
</IfModule>
<IfModule suexec_module>
<IfModule !mod_ruid2.c>
SuexecUserGroup myuser myuser
</IfModule>
</IfModule>
<IfModule ssl_module>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/cert-1.domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/cert-1.domain.com/privkey.pem
</IfModule>
</VirtualHost>
<VirtualHost *:443>
ServerName cert-2.domain.com
ServerAlias cert-2.domain.com,*.org.domain.com
DocumentRoot /home/myuser/public_html
ServerAdmin [email protected]
UseCanonicalName Off
<IfModule mod_suphp.c>
suPHP_UserGroup myuser myuser
</IfModule>
<IfModule suexec_module>
<IfModule !mod_ruid2.c>
SuexecUserGroup myuser myuser
</IfModule>
</IfModule>
<IfModule ssl_module>
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/cert-2.domain.com-2/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/cert-2.domain.com-2/privkey.pem
</IfModule>
</VirtualHost>
しかし、anything.org.domain.comにアクセスすると、2番目の仮想ホストのSSLファイルではなく、最初の仮想ホストのSSLファイルが読み込まれます。
最初の仮想ホストまたは 2 番目の仮想ホストにないサブドメインを試した場合でも、最初の仮想ホストの SSL ファイルが読み込まれ、ブラウザーは無効な SSL エラーをスローします。
どうすれば解決できるでしょうか
ありがとう
答え1
サーバー エイリアスはコンマではなくスペースで区切る必要があるため、行ServerAlias
は次のようになります。
ServerAlias cert-1.domain.com *.net.domain.com
1 つのブロックに複数のServerAlias
ディレクティブを指定できるため、エイリアスが多数ある場合に構成が読みやすくなることに注意してください。
明示的な構成が存在しないホストを要求した場合、Apache は最初に見つかったブロックを提供します (これが、 "catch-all" サイトを持つために、最後の場所にVirtualHost
ブロックを含めることが良い考えである理由ですServerAlias *
)。
したがって、あなたの場合、どのServerAlias
行も機能しません (少なくとも期待どおりには機能しません)。なぜなら、カンマ、アスタリスクなどを含む「cert-2.domain.com,*.org.domain.com」という名前を持つサーバーのエイリアスを定義しているからです。このため、「anything.org.domain.com」を要求すると、Apache は最初に遭遇したブロックを提供します。このホスト名は構成で定義されていないためです。