Apache:www SSL 站点未转发至非 www 版本

Apache:www SSL 站点未转发至非 www 版本

我有一个客户,他有一个由 Apache 托管的 PHP 网站。该网站仅供内部使用,但他们仍希望员工能够通过手机和家用电脑访问该网站。客户担心安全性,希望整个网站使用 https 而不是 http,因此他们购买了 SSL 证书。现在,http://example.com/转发至https://example.com/http://www.example.com/还转发给https://example.com/。这两个转发都是正确的。然而,https://www.example.com/不会转发到非 www 版本,这是不正确的。不仅如此,它还会显示“Red Hat Enterprise Linux 测试页面”!我对 SSL 证书了解不多,但从我读过的内容来看,听起来我需要另一个用于 www 版本的 URL 的 SSL 证书,即使我所做的只是将其转发到非 www 版本的 URL。听起来对吗?在这种情况下,您建议我做什么?

这是我的虚拟主机配置的样子(当然,只有正确的 IP 地址和主机名):

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com

    Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost 1.2.3.4:443>
    ServerAdmin [email protected]
    DocumentRoot "/var/www/example.com/public"
    ServerName example.com
    ServerAlias www.example.com

    <Directory /var/www/example.com/public>
        Options All
        AllowOverride All

        SSLRequireSSL
        SSLOptions +StrictRequire
        SSLRequire %{HTTP_HOST} eq "example.com"
    </Directory>

    ErrorLog /var/log/httpd/example.com-error.log
    LogLevel warn
    CustomLog /var/log/httpd/example.com-access.log combined
    ServerSignature Off

    SSLEngine on
    SSLCertificateFile /etc/httpd/certificates/example.com/example.com.crt
    SSLCertificateKeyFile /etc/httpd/certificates/example.com/example.key
    SSLCertificateChainFile /etc/httpd/certificates/example.com/gd_bundle.crt
</VirtualHost>

答案1

目前,大多数廉价 SSL 证书都支持带 www 和不带 www 的域名。您应该咨询客户购买证书的公司,以确保证书已为此设置。

但是,如果这是唯一的问题,那么在访问时,您会看到 SSL 警告,而不是默认页面https://www.example.com/

SSL 与 VirtualHosts 配合使用效果不佳。机器上是否托管了其他网站?如果没有,是否可以将 VirtualHosts 和所有设置都设置为默认设置。

相关内容