我正在使用 ubuntu 9.10、apache2 和 php5。在一个 IP 地址上托管多个 SSL 站点但使用不同的端口是一个好主意吗?如果是,我应该使用哪些端口?
答案1
使用您喜欢的任何端口,但请注意这可能会给用户带来一些困惑。如果您想这样做,请调整您的 /etc/apache2/ports.conf 文件并添加类似以下内容(端口是证书的一部分):
<IfModule mod_ssl.c>
# SSL name based virtual hosts are not yet supported, therefore no
# NameVirtualHost statement here
NameVirtualHost *:443
Listen 443
NameVirtualHost *:442
Listen 442
</IfModule>
然后编辑 /etc/apache2/sites-enabled/somefile,使其包含如下内容:
<VirtualHost *:443>
ServerName blah1.site.com
more stuff here
</VirtualHost>
<VirtualHost *:442>
ServerName blah2.site.com
more stuff here
</VirtualHost>
如果存在问题,您可以使用 mod_rewrite 来隐藏端口。
答案2
我认为这不是一个好主意,因为有许多防火墙被设置为端口过滤器,故意让 80 (http) 和 443 (https) 通过并阻止其他端口。或者他们监控在其他开放端口上使用的协议。因此,你会以这种方式失去部分受众。
另一个让人烦恼的来源是你的用户必须如果他们不想收到证书错误,请记住输入正确的端口号。也就是说:如果https://www.example.com:444/是正确的,https://www.example.com:445/如果端口 445 将该证书用于另一个站点,则会触发错误。
我从未尝试过这样做,但我相信端口号甚至必须是证书的一部分。
根据您的使用情况,您可能更适合使用认证 *.example.com 的通配符证书,并且您可以使用该证书操作任意数量的子域。如果您要扩展,您可以在任意数量的主机上使用它,只要它们尽可能多地到达https://anysubdomain.example.com/。