Cpanel 服务器通配符 SSL 证书

Cpanel 服务器通配符 SSL 证书

我有一个 *.phppointofsale.com 的通配符 SSL 证书,它工作正常,但是当用户访问https://www.phppointofsale.com它使用*.phppointofsale.com 的文档根目录。

我有 2 个问题

  1. 我可以在 www.phppointofsale.com、forums.phppointofsale.com、phppointofsale.com 上使用它吗?
  2. 我如何才能拥有多个 SSL 证书的文档根目录?

答案1

Cpanel 对如何设置此功能进行了限制,而这在 Apache 环境中通常不存在(我想,这是为方便而付出的代价)。

目前有几种方法可以解决这个问题:

a) 您可以手动编辑配置文件(不建议这样做 - CPanel 本身可能会覆盖手动更改)

b) 将每个子域名设置为单独的帐户,并为每个(子)域名提供自己的 IP 地址(浪费 IP,繁琐)

c) 使用 mod_rewrite 将您的请求重定向到正确的文档根目录。

RewriteCond %{SERVER_PORT} ^443$
RewriteCond %{HTTP_HOST} ^forums\.phppointofsale\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/forums/
RewriteRule ^(.*) /forums/$1

它进入 /home/you/public_html/.htaccess,并假定 /home/you/public_html/forums 是 forums.phppointofsale.com 的文档根目录。

答案2

我注意到所有这些主机名都指向同一个 IP 地址。基于名称的虚拟主机无法通过 HTTPS 工作,因为 HOSTNAME 是在加密的 http 标头中发送的。解决这个问题的唯一方法是让每个 ssl vhost 位于不同的 IP 地址或端口上。

该限制描述于维基百科

答案3

但是,如果您控制服务器,则可以设置 SNI。

... SSL 协议的扩展,称为服务器名称指示...使用 SNI,您可以让多个虚拟主机共享相同的 IP 地址和端口,并且每个虚拟主机都可以拥有自己唯一的证书(以及其余配置)。

http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

http://en.wikipedia.org/wiki/服务器名称指示

相关内容