如何在 VHOST Apache2 中限制一个域的 SSL

如何在 VHOST Apache2 中限制一个域的 SSL

我已经在 apache2 上配置了 Vhost。这是一个基于名称的配置。第一个域名是 SSL 安全的,第二个是非 SSL 安全的站点。如果在浏览器地址栏中输入,则所有域名都运行正常https://www.domain1.com/page1/http://domain2.com/page2/.但如果我尝试访问https://domain2.com/page1/并尝试加载不安全的页面1,但该页面在domain2.com上不可用。

如果我从 ssl 检查器 domain2 检查是否也获得相同的 ssl 证书

我的期望是它不应该加载页面1,因为它不存在。并且如果从ssl检查器检查,应该不会再找到ssl证书。请问如何防止这种情况发生。提前谢谢了。

我的配置可以在下面的文件夹“/etc/apache2/sites-available”示例中找到 域名1.com.conf

<VirtualHost *:80>
     ServerName  domain1.com
     ServerAlias www.domain1.com
     DocumentRoot /var/www/domain1.com/public_html

</VirtualHost>
<VirtualHost *:443>
     ServerName  domain1.com
     ServerAlias *.domain1.com
     DocumentRoot /var/www/domain1.com/public_html
     SSLCertificateFile "path/domain1_com.crt"
     SSLCertificateKeyFile "path/domain1_.key"
     SSLCACertificateFile "path/domain1.ca-bundle"
</VirtualHost>

域名2.com.conf

<VirtualHost *:80>
     ServerName  domain2.com
     ServerAlias *.domain2.com
     DocumentRoot /var/www/domain2.com/public_html

</VirtualHost>

答案1

Apache 始终有一个默认 SSL 主机。在本例中,它将是 domain1.com vhost,因为可能没有其他主机。

有两种方法。

  1. 仅使用警告/消息设置不同的默认虚拟主机。

第一个配置在词汇上获胜。因此,如果您有一个 0000.conf,它通常会成为默认虚拟主机。您可以在那里放置一条警告消息,并使用 mod_rewrite 将所有请求重定向到它。

    RewriteEngine 开启
    重写规则 ^/?warning\.html$ - [L]
    重写规则 .* /warning.html [L]
  1. 在您的 vhost 中使用 mod_rewrite 过滤主机头并显示失败或消息以“拒绝”其他主机头。
    RewriteEngine 开启
    RewriteCond %{HTTP_HOST} !^your\.host$
    RewriteCond %{HTTP_HOST} !^www\.your\.host$
    重写规则 .* - [F]

当然,只有当人们首先接受 SSL 警告时,他们才会看到服务器响应。

答案2

解决方案

就我而言,我已经更改了基于配置名称和基于 ip 的混合类型。对于 ssl 安全站点来说,是基于 ip 的配置。

步骤1:为 ubuntu 服务器分配多个 ip 地址。

第2步:使用单独的 IP 地址注册 DNS。所有安全域都有单独的 IP 地址,其余域非 SSL,为每个域分配一个 IP 地址。

步骤3:在终端“hostname -I”中检查本地 IP

步骤4:将“*”替换为本地 IP 地址

它将限制通过 https 加载 domain2,抛出 404

相关内容