私は、仮想ホスト(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にヒットする前にリクエストがバーチャルホストにヒットしたとしても、それはうまくいくとは思えませんでしたが、試してみると思いました。ええ、運がない。
残念ながら、それはトリックをしていないようです。私のhttpd.confに 'NameVirtualHost *:80'を追加しましたが、問題は続く(さらに、Apacheを再起動すると警告が表示されます:' AH00548:NameVirtualHostは効果がなく、次のリリースでは削除されます ' – CGriffin