我有一个网站正在运行https://www.example.org/ 我打算创建http://games.example.com/[不使用 SSL]。
我在 Ubuntu 16 服务器上运行 Apache 2。
我希望子域名保留为 http,主域名保留为 https。我应该怎么做?
目前的设置如下:
000-默认.conf:
<VirtualHost *:80>
ServerName www.example.com
Redirect permanent "/" "https://www.example.com/"
#SSLProtocol all -SSLv2 -SSLv3
ServerAdmin [email protected]
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName games.example.com
ServerAdmin [email protected]
DocumentRoot /var/www/games
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName planets.example.com
ServerAdmin [email protected]
DocumentRoot /var/www/2moons
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
默认 SSL/conf:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin [email protected]
ServerName www.example.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/ssl/certs/certificate.crt
SSLCertificateKeyFile /etc/ssl/private/private.key
<FilesMatch "\.(cgi|shtml|phtml|php|jpg)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
</VirtualHost>
</IfModule>
答案1
鉴于所讨论的域名似乎是,followarmy.com
我尝试访问http://games.followarmy.com/
,这首先有效。但是当访问时,它https://followarmy.com
不再http://games.followarmy.com/
起作用。原因是https://followarmy.com
为域设置了 HSTS:
Strict-Transport-Security: max-age=63072000; includeSubdomains
由于includeSubdomains
设置为,因此以后对 的任何访问都http://games....
将由浏览器自动重写为https://games....
。但是,当尝试使用 https 访问网站时,它将失败,因为证书的主题与网站不匹配。有关 HSTS 标头的更多信息,请参阅文档。
请注意,从您显示的不完整配置中看不到此信息。从此配置中也看不出您的 SSL 设置已损坏。相反,如果发送叶证书和 Let's Encrypt 的必要中间证书,则您只发送叶证书。有关更多详细信息,请参阅ssllabs 报告。