web-dev-qa-db-ja.com

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

次のディレクティブを使用して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にリダイレクトすることです。そうすると、アクセスしたときに警告や間違ったサイトが表示されなくなります。

10
nearengine

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>
7
Shane Madden

これを行うには、サーバー名表示(SNI)が必要です。詳細はリンク http://wiki.Apache.org/httpd/NameBasedSSLVHostsWithSNI を参照してください。

0
Karthikeyan

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>
0
tywtyw2002