首先,我不想使用重写。
我正在尝试将任何调用(HTTP 或 HTTPS)重定向到myserver
使用 https 的安全完全限定域https://myserver.fullyqualified.com
。
这是我的配置
# Redirect all http traffic to https
<VirtualHost *:80> # line 545
Redirect / https://myserver.fullyqualified.com/
</VirtualHost>
<VirtualHost *:443> # line 549
ServerName myserver.fullyqualified.com
SSLEngine on
SSLCertificateFile "conf/mycert.crt"
SSLCertificateKeyFile "conf/mykey.key"
</VirtualHost>
<VirtualHost *:443> # line 555
ServerName myserver
Redirect / https://myserver.fullyqualified.com/
</VirtualHost>
这对于 HTTP 来说工作得很好,我可以调用它http://myserver
并且它可以重定向到https://myserver.fullyqualified.com
很好。
然而,当我拨打电话时https://myserver
,我收到有关该网站不安全的错误,并且它没有https://myserver.fullyqualified.com
像我期望的那样重定向。
在 Chrome 中,错误显示
此服务器无法证明它是 myserver;其安全证书来自 myserver.fullyqualified.com。这可能是由于配置错误或攻击者拦截了您的连接所致。
这是输出httpd -S
*:80 MYSERVER.fullyqualified.com (C:/Apache24/conf/httpd.conf:545)
*:443 is a NameVirtualHost
default server myserver.fullyqualified.com (C:/Apache24/conf/httpd.conf:549)
port 443 namevhost myserver.fullyqualified.com (C:/Apache24/conf/httpd.conf:549)
port 443 namevhost myserver (C:/Apache24/conf/httpd.conf:555)
ServerRoot: "C:/Apache24"
Main DocumentRoot: "C:/Apache24/htdocs"
Main ErrorLog: "C:/Apache24/logs/error.log"
Mutex default: dir="C:/Apache24/logs/" mechanism=default
Mutex rewrite-map: using_defaults
Mutex ssl-stapling-refresh: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex ssl-cache: using_defaults
PidFile: "C:/Apache24/logs/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
Define: SRVROOT=c:/Apache24
如何将 HTTPS 流量重定向到完整合格域名?
答案1
您的 HTTPS SSL 证书应该包含 myserver 作为备用名称,因为它看起来像一个阻止重定向的简单 SSL 错误。
如果是自制证书,请确保在测试之前将其安装到客户端存储中。如果您进入活动目录域,则可以通过 GPO 部署证书。
答案2
如果您的证书是https://example.com
,浏览器将不会接受它访问,https://example
因为名称不匹配。
除非您的浏览器(以及所有客户端的浏览器)接受了自签名证书,否则无法阻止这种情况,并且您将无法获得没有 TLD 的主机名的任何公共签名证书(例如,使用 Let's encrypt 或任何常规 CA)。