.htaccess 从 SSL 根域重定向到具有不同 SSL 的另一个子域会导致 NET::ERR_CERT_COMMON_NAME_INVALID

.htaccess 从 SSL 根域重定向到具有不同 SSL 的另一个子域会导致 NET::ERR_CERT_COMMON_NAME_INVALID

我需要帮助来解决这个问题。

  1. 我有两个本地、独立的网络服务器 192.168.11.5 (https://www.example.com) 和 192.168.9.14 (https://project.example.com)。每个都安装了来自 positivieSSL 的单独非通配符 SSL
  2. 我有一个公共静态,并为两者创建了一个条目以指向这个静态 IP
  3. 防火墙路由会将所有 http 请求路由到https://www.example.com(192.168.11.5);并将所有 http 端口 90 路由至https://project.example.com(192.168.9.14)
  4. 到两个 Web 服务器的所有路由均运行正常(www 使用默认端口,而https://project.example.com:90

但是当用户只输入 project.mydomain.com 而不输入端口时,防火墙会将该服务路由到https://www.example.com这是端口 80(默认 http 端口)的默认值。我在根目录中添加了此 .htaccesswww.example.com将 project.example.com 的请求重定向到端口 90 的 https。

    <IfModule mod_rewrite.c>
    # Use https for www, dont match project subdomain
            RewriteCond %{HTTPS} off [OR]
            RewriteCond %{HTTP_HOST} !^www\. [NC]
            RewriteCond %{HTTP_HOST} !^project\. [NC]
            RewriteCond %{HTTP_HOST} ^(.*)$  [NC]
            RewriteRule (.*) https://www.example.com/$1 [R=301,L]
    
    # Rewrite project.example.com (if no port specified) to port 90
    
            RewriteCond %{HTTP_HOST} ^project\. [NC]
            RewriteRule (.*) https://project.example.com:90/$1 [L,R=301]
    
    </IfModule>

重定向有效,但有此通知(用户必须忽略该通知才能重定向):

NET::ERR_CERT_COMMON_NAME_INVALID
This server could not prove that it is project.example.com; its security certificate is from www.example.com.
This may be caused by a misconfiguration or an attacker intercepting your connection.

Proceed to project.example.com (unsafe)

在此先感谢您对摆脱上述证书错误消息的任何建议。

答案1

将 (ssl) 虚拟主机添加到 192.168.11.5 https://project.example.com重定向至 https://project.example.com:90 (注意 https 在 443 上,所以大多数人认为 8443 是 alt 端口而不是 90)您需要将 SSL 证书添加到 192.168.11.5,以便它可以应答流量以将流量重定向到其他主机。

如果你在 192.168.11.5 上终止 SSL 流量,则可以将其代理到 192.168.9.14

相关内容