Apache 重定向和 HTTPS
Apache Redirect & HTTPS
我想我正在尝试同时做三件事,但我正在尝试:
- 直接
example.com
到example.com.au
- 直接
example.com.au
到www.example.com.au
- 将 HTTP 定向到 HTTP
也就是说,四个变体都针对 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/(或者,如果可能的话,获得一个匹配所有需要的主机名的证书)。
我想我正在尝试同时做三件事,但我正在尝试:
- 直接
example.com
到example.com.au
- 直接
example.com.au
到www.example.com.au
- 将 HTTP 定向到 HTTP
也就是说,四个变体都针对 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/(或者,如果可能的话,获得一个匹配所有需要的主机名的证书)。