我有一台运行 Ubuntu 12.04.3 LTS 的服务器和两台运行 Ubuntu 14.04.1 LTS 的服务器,它们都具有 SSL 证书。所有服务器都是 bitnami 堆栈,因此它们的 apache2 配置文件位于:
/opt/bitnami/apache2/conf/bitnami
要求是针对两个带有和不带有域名的域名提供多个域名证书,www.
所以实际上总共有 4 个。
website.com
www.website.com
website.co.uk
www.website.co.uk
最后,virtual-host _default_:443
Apache2 bitnami.conf 文件的部分为所有这些域设置了一个证书。但是证书提供商建议使用两个证书而不是一个(因为这样更便宜)。
当两个域只有一台物理服务器时,Apache2 conf 中是否可以有两个证书?
如果是这样,那么您如何设置虚拟主机来处理两个证书?
答案1
每个虚拟主机只能有一个证书。但这是免费软件。只需为每个域添加一个单独的虚拟主机并为其提供自己的证书,无需任何成本(而且开销很小)。
除非内容有变化,否则我会更进一步,选择一个域名作为主域名,并让所有其他域名重定向到该域名。这通常是让搜索引擎满意的最佳方式(人们自然传播的链接将指向同一个域名)。
无论如何,这会产生三个虚拟主机:
- 您托管的那个。例如
www.website.com
- 一个域名与另一个域名相同,但使用备用前缀(例如
website.com
)重定向到主域名,例如website.com
。使用相同的证书。 - 每个替代 TLD(捕获 www 和无 www)一个用于重定向。
单个多域证书具有一些好处:
- XP 及更早版本上的 IE8 及更早版本不支持 SNI,这意味着每个证书都需要一个合法的 IP 地址。多域证书可以轻松解决这个问题,因为您只需为每个请求抛出相同的证书即可。
- 证书过期时需要更新的内容较少。
不过,这通常不足以抵消其成本。而且它们是固定的,所以如果您需要添加另一个域名,您必须支付全额费用。获取大量 IPv4 地址仍然更便宜。
即使拥有多域证书,我仍然会使用三个虚拟主机重定向到一个域。
答案2
每个域名可以有一个证书。要实现这一点,您需要为每个域名创建虚拟主机文件。我们以 website.com 为例。
您可以在 找到默认的 SSL 模板文件
/etc/apache2/sites-available/default-ssl
。我们将创建一个新文件
/etc/apache2/sites-available/website.com
。编辑新文件以匹配以下示例:
<IfModule mod_ssl.c> <VirtualHost 192.168.0.100:443> ServerAdmin [email protected] ServerName website.com:443 DocumentRoot /var/www/website.com <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/website.com> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> SSLEngine on SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key </VirtualHost> </IfModule>
然后激活新文件。
sudo a2ensite website.com
重新加载 Apache
sudo service apache2 reload