特定の仮想ホストへのhttpsアクセスを無効にする方法は?


10

次のディレクティブを使用してApacheサーバーをセットアップしました。

NameVirtualHost *:80

<VirtualHost *:80>  
ServerName example1.com  
ServerAlias www.example1.com  
DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
ServerName example2.com
ServerAlias *.example2.com
DocumentRoot /var/www/example2
</VirtualHost>

<VirtualHost example1.com:443>
DocumentRoot /var/www/html
ServerName example1.com:443
SSLEngine on
...
</VirtualHosts>

そのため、example1.comはSSLをサポートしており、http:// example1.comまたはhttps:// example1.comを介してアクセスできます。ただし、ブラウザでhttps:// example2.comにアクセスすると、https:// example1.comが表示されるという意図しない副作用があります。私がしたいことは、基本的にはhttps:// example2.comを無効にするか、http:// example2.comにリダイレクトすることです。

回答:


7

example1とexample2が異なるIPアドレス上にあるか、両方の名前をカバーするSSL証明書を取得しない限り、警告を回避することはできません-エラーページまたはリダイレクトは、SSL接続が確立されるまで発生しません。

そうは言っても、これらの線に沿った何かがうまくいくはずです:

NameVirtualHost *:443
<VirtualHost *:443>
  ServerName example1.com
  SSLEngine on
  #...
</VirtualHost>
<VirtualHost *:443>
  ServerName example2.com
  SSLEngine on
  # same certificate config here as on example1, unless you're wanting to use TLS SNI
  # then, let's redirect the user to non-SSL
  Redirect permanent / http://example2.com/
</VirtualHost>

ありがとう!NameVirtualHostディレクティブが欠落していたと思います。Apacheは、2つの仮想ホストを互いに競合させようとしていると考えました。興味深いことに、Chromeはこのリダイレクトに対して警告をスローしていません...しかし、私は心配していません。SSLサイトが他のドメイン名で表示されないようにしたいだけです。
nearengine

非SSLにフォールバックするために無効な証明書を追加することと同じではありませんか?私はあなたのvhostディレクティブの証明書の名前に_fakeを直接追加できると思います。
m3nda

0

ServerName example1.com:443に:443を配置する必要があるとは思わない

これらは正しく構成する必要があります

<VirtualHost example1.com:443> //change example1.com to ip address is a good habit
DocumentRoot /var/www/html
ServerName example1.com
SSLEngine on
...
</VirtualHosts>

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