域上有 SSL,但子域上没有 SSL

域上有 SSL,但子域上没有 SSL

我有一个网站正在运行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 报告

相关内容