2016-11-18 20 views
0

私は、仮想ホスト(Apache)を実行しているいくつかのサブドメインを持つUbuntuサーバーを持っています。ほとんどの仮想ホストは1つのファイルに含まれていますが、1つは2つのファイルに分かれています(Let's Encryptは1つの.confファイルで複数の仮想ホストをサポートしないため)。サブドメインのいずれかにのみSSL証明書がインストールされています。他のドメインは現在SSLを気にしていません。SSLポート経由でのサブドメインリダイレクトの防止

問題は、他のサブドメインへのHTTPS要求が1つのサブドメインにルーティングされていることです。その必要はありません。

だから、たとえば、ここに私のメインの.confファイル構造です:

<VirtualHost *> 
    ServerAdmin [email protected] 
    ErrorLog /var/log/apache2/error.log 
    CustomLog /var/log/apache2/access.log combined 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName domain.com 
    ServerAlias www.domain.com 
    DocumentRoot /var/www/domain 
    <Directory "/var/www/domain"> 
     ... 
    </Directory> 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName sub.domain.com 
    DocumentRoot /var/www/sub_domain 
    <Directory "/var/www/sub_domain"> 
     ... 
    </Directory> 
</VirtualHost> 

そして、ここに私のSSL-インストールサブドメイン.confファイル構造です:

<VirtualHost *:80> 
    ServerName ssl.domain.com 
    DocumentRoot /var/www/ssl_domain 
    <Directory "/var/www/ssl_domain"> 
     .... 
    </Directory> 
</VirtualHost> 

そして最後に、ここでは.confファイルですHTTPSリクエストをリッスンするためにEncryptを生成しましょう:

<IfModule mod_ssl.c> 
    <VirtualHost *:443> 
     ServerName ssl.domain.com 
     DocumentRoot /var/www/ssl_domain 
     <Directory "/var/www/ssl_domain"> 
      .... 
     </Directory> 
     SSLCertificateFile /path/to/cert.pem 
     SSLCertificateKeyFile /path/to/key.key 
     Include /etc/letsencrypt/options-ssl-apache.conf 
     SSLCertificateChainFile /path/to/chain.pem 
    </VirtualHost> 
</IfModule> 

ドメインのyは正常に動作します。 SSL対応のサブドメインへのHTTPS要求は正常に機能します。しかし、 'ssl.domain.com'以外のドメインへのHTTPSリクエストは、まず 'あなたの接続は安全ではありません'というエラーを生成し、 'ssl.domain.com'からロードします。私はそれがちょうどエラーを生成し、私が正直であればそれを残すことを好むだろう。このリダイレクトを防止するにはどうすればよいですか?

私はからSSLサブドメインの仮想ホストを変更しようとしたことに注意してください。

<VirtualHost *:443> 

へ:影響を与えなかった

<VirtualHost ssl.domain.com:443> 

EDIT:httpsをhttpに変更するための.htaccess書き換えルールの実装も試行しました。 .htaccessにヒットする前にリクエストがバーチャルホストにヒットしたとしても、それはうまくいくとは思えませんでしたが、試してみると思いました。ええ、運がない。

答えて

0

誰もが自分のモニターで叫んでいたので、わたしは明らかにSSLをサーバー全体にインストールしました。

0

私はあなたがNameVirtualHostを定義する必要があると思います、それは1つのIPで複数のドメインを扱うのに役立ちます。 httpd.confでNameVirtualHostを定義します。

これを定義すると、ジョブが実行されます。必ずApacheを再起動してください。

+0

残念ながら、それはトリックをしていないようです。私のhttpd.confに 'NameVirtualHost *:80'を追加しましたが、問題は続く(さらに、Apacheを再起動すると警告が表示されます:' AH00548:NameVirtualHostは効果がなく、次のリリースでは削除されます ' – CGriffin

関連する問題