使用 HTTPS 将主机名重定向到完全限定域名失败

zer*_*pha 8 https virtualhost apache-2.4

首先,我不想使用重写。

我正在尝试myserver使用 https将任何调用(HTTP 或 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>
Run Code Online (Sandbox Code Playgroud)

这适用于 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
Run Code Online (Sandbox Code Playgroud)

如何将 HTTPS 流量重定向到完全限定域名?

yag*_*555 10

您用于 HTTPS 的 SSL 证书应该在其中包含 myserver 作为替代名称,因为这似乎是一个阻止重定向的简单 ssl 错误。

如果是自制证书,请务必在测试前将其安装到客户端商店。如果您在活动目录域中,则可以通过 GPO 部署证书。

  • 在证书中添加 `myserver` 作为备用名称解决了该问题 (3认同)

Sve*_*ven 5

如果您的证书用于https://example.com,浏览器将不会接受它访问,https://example因为名称不匹配。

除非您的浏览器(以及所有客户端的)都接受了自签名证书,否则无法阻止这种情况,并且您将不会获得主机名的任何公共签名证书(例如使用 Let's encrypt 或任何常规 CA)没有顶级域名。