Apache 多个域和多个 SSL 到同一 IP 和文件夹

Apache 多个域和多个 SSL 到同一 IP 和文件夹

我正在构建一个系统,我需要对具有多个域的站点使用相同的 IP 和相同的文件夹,并为每个域使用单独的 SSL 证书。另外,我不希望他们重定向或转发,因为该网站可以自行处理不同的域。

很喜欢

site1.example.com 192.168.0.2:443 /var/www/html

site2.example.com 192.168.0.2:443 /var/www/html

site3.example.com 192.168.0.2:443 /var/www/html

site4.example.com 192.168.0.2:443 /var/www/html

我正在使用 Ubuntu 14.04 和 Apache2,我真的不知道文件hosts应该如何查找,有人能给我举个例子吗?

答案1

早些时候,在单个 IP 地址上托管的多个站点上使用多个 SSL 证书是很痛苦的。由于这个网站管理员需要投入更多的钱来购买单独的IP地址。然而,现在在 SNI(服务器名称指示器)的帮助下,可以在 Apache 上的单个 Internet 协议上使用不同的 SSL 证书来保护多个站点。

使用 Apache 设置 SNI:

首先对您的 .conf 进行全新备份

现在要实现上述功能,您需要在您的服务器上创建虚拟主机。为新虚拟主机创建新的 .conf 文件,或者您可以使用现有的。如果您要创建新的 .conf 文件,则需要将以下行添加到现有的 .conf 文件中。

Include my_other_site.conf

现在,使用端口 *:443 在 NameVirtualHost 指令中列出您的公共 IP 地址。然后您需要将根证书、中间证书和 SSL 文件指向每个网站。检查下面的示例以了解更多信息:

NameVirtualHost *:443

<VirtualHost *:443>
 ServerName site1.domain.com 
 DocumentRoot /var/www/site
 SSLEngine on
 SSLCertificateFile /path/to/site1_domain_com.crt
 SSLCertificateKeyFile /path/to/site1_domain_com.key
 SSLCertificateChainFile /path/to/CA.crt
</VirtualHost>

<VirtualHost *:443>
 ServerName site2.domain.com
 DocumentRoot /var/www/site2
 SSLEngine on
 SSLCertificateFile /path/to/site2_domain_com.crt
 SSLCertificateKeyFile /path/to/site2_domain_com.key
 SSLCertificateChainFile /path/to/CA.crt
</VirtualHost>

这应该可以正常工作,但在我看来,当您可以获得单个 SAN(主题备用名称)SSL 时,您不应该在不同站点使用不同的 SSL 证书,因为您可以使用单个证书保护多个站点。如果您在一个域下只有子域需要保护,那么您可以简单地选择通配符 SSL,这是一种经济高效的选择。您只需颁发通配符证书,*.domain.com星号 (*) 的所有内容(仅第一级)都将被覆盖。

通配符 SSL 和 SAN 证书都将降低成本和管理麻烦。读本文如果您想了解通配符 SSL 和 SAN 之间的区别。

答案2

跟进 Gunjan Tripathi 的答案,让所有域使用相同的数据目录,您将设置DocumentRoot为相同的目录。

<VirtualHost *:443>
 ServerName site1.domain.com 
 DocumentRoot /var/www/html
 SSLEngine on
 SSLCertificateFile /path/to/site1_domain_com.crt
 SSLCertificateKeyFile /path/to/site1_domain_com.key
 SSLCertificateChainFile /path/to/CA.crt
</VirtualHost>

<VirtualHost *:443>
 ServerName site2.domain.com
 DocumentRoot /var/www/html
 SSLEngine on
 SSLCertificateFile /path/to/site2_domain_com.crt
 SSLCertificateKeyFile /path/to/site2_domain_com.key
 SSLCertificateChainFile /path/to/CA.crt
</VirtualHost>

相关内容