Apache 重定向和 HTTPS

Apache Redirect & HTTPS

我想我正在尝试同时做三件事,但我正在尝试:

也就是说,四个变体都针对 HTTPS 版本。

以下是配置文件中的部分:

<VirtualHost *:80>
    ServerName example.com.au
    ServerAlias www.example.com.au example.com www.example.com
    ServerAdmin …
    Redirect permanent / https://www.example.com.au/
</VirtualHost>

<VirtualHost *:443>
    ServerName www.example.com.au:443
    ServerAlias example.com.au www.example.com example.com
    ServerAdmin …
    VirtualDocumentRoot /whatever/example.com/www
    CustomLog logs/example.log combined env=!dontlog

    SSLEngine on
    SSLCertificateFile      /etc/letsencrypt/live/www.example.com.au/cert.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/www.example.com.au/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/www.example.com.au/chain.pem
</VirtualHost>

问题是虽然重定向似乎有效,但证书似乎并不适用。当我尝试在浏览器中打开以下内容时(没有 www):

https://example.com.au/

我收到以下消息:

The certificate is only valid for www.example.com.au

现在我认为重定向应该告诉浏览器它真的要去 https://www.example.com.au,但是:

问题是:如何配置虚拟主机以使用一个证书将这些变体重定向到 SSL?

我的 DNS 服务器设置正确(所有名称解析正确)并且 LetsEncrypt 正确且最新。仅更改域名以保护无辜者。

警告的原因是:您的浏览器在尝试访问 https://example.com.au/ 时无法相信 301 Redirect 响应确实来自 example.com.au,因为没有这样的证书中的主机名。

由于您已经在使用 Let's encrypt certs,您只需将 :443 VirtualHost 分成 4 个独立的虚拟主机,每个虚拟主机都有自己的证书,然后配置其中 3 个并重定向到 https://www.example.com.au/(或者,如果可能的话,获得一个匹配所有需要的主机名的证书)。