Apache - 多个SSL问题

时间:2012-01-03 16:42:41

标签: apache ssl httpd.conf

我在一个名为virtualhosts.conf的文件中定义了2个站点,在httpd.conf的末尾加载。

它们的格式均为:

<VirtualHost IP:80>
  DocumentRoot D:/Site/A/
  ...
</VirtualHost>

<VirtualHost IP:443>
  DocumentRoot D:/Site/A/
  ...
</VirtualHost>

<VirtualHost IP__2:80>
  DocumentRoot D:/Site/B/
  ...
</VirtualHost>

<VirtualHost IP__2:443>
  DocumentRoot D:/Site/B/
  ...
</VirtualHost>

如果我加载https://sitea.com,使用上面的配置,它加载就好了。如果我使用上面的配置加载https://siteb.com,它会中断,说siteb将自己标识为sitea。如果我翻转条目的顺序:

<VirtualHost IP__2:80>
  DocumentRoot D:/Site/B/
  ...
</VirtualHost>

<VirtualHost IP__2:443>
  DocumentRoot D:/Site/B/
  ...
</VirtualHost>

<VirtualHost IP:80>
  DocumentRoot D:/Site/A/
  ...
</VirtualHost>

<VirtualHost IP:443>
  DocumentRoot D:/Site/A/
  ...
</VirtualHost>

现在,siteb加载得很好,但是sitea会抛出一个错误,它将自己标识为siteb。

发生了什么事?似乎Apache默认为文件中的“顶部”条目,即使它们的域名似乎都是有效的,如果它们是第一个。

编辑:我httpd.conf的顶部:

Listen 80
Listen 443

NameVirtualHost IP.50:80
NameVirtualHost IP.50:443

NameVirtualHost IP.51:80
NameVirtualHost IP.51:443

NameVirtualHost IP.52:80
NameVirtualHost IP.52:443

NameVirtualHost IP.53:80
NameVirtualHost IP.53:443

NameVirtualHost IP.54:80
NameVirtualHost IP.54:443

NameVirtualHost IP.55:80
NameVirtualHost IP.55:443

NameVirtualHost IP.56:80
NameVirtualHost IP.56:443

1 个答案:

答案 0 :(得分:1)

SSL是在HTTP请求之前建立的,并且服务器在收到请求时不知道要提供的证书。除了为每个安全域设置专用IP之外,此问题没有通用解决方案。而且你的问题在StackOverflow上是偏离主题的。