2017-02-23 101 views
0

我的提供者 - ehost有问题。子域和主域上的SSL - ehost

我有通配符证书。我想在我去之前先测试它。所以我要求先在子域上安装它(uat.domain.com)。我已经测试了应用程序并想要上线。提供者说,在主域(domain.com)上安装证书是不可能的,因为他们首先在子域上安装了证书。

当然他们已经让我从他们那里购买证书。

我真的不明白这个问题,有人可以告诉我他们是否有权利?我认为甚至可以从ehost获得证书并将其发送给其他提供商并进行安装。证书现在安装在Apache服务器上,并且子域和主域的文件夹位于同一服务器中。

回答

1

没有看实际的配置很难说,但要回答你的问题,如果他们说这是不可能的,那是因为他们只是在他们的服务器中使用1个VirtualHost。

通常共享主机有这些问题,因为他们将1个单独的Apache实例分配给许多不同的客户端,并且每个客户端有1个虚拟主机,但这只是猜测您需要检查这是目前发生的事情。

但我也可以介绍Apache如何工作的,以了解可能发生的情况:

如果Apache的配置有不同的virtualhosts,你可以有许多不同的证书,通配符和诸如此类的东西,因为你virtualhosts。

这是每个VirtualHost 1个证书。

但是,这不是全部,如果你有几个不同的域或子域名,这是当你需要仔细计划你必须如何配置它们。

例如

如果您定义了这个虚拟主机第一:

<VirtualHost *:443> 
ServerName example.com 
ServerAlias *.example.com 
</VirtualHost> 

没有其他virtualhosts为whatever.example.com或example.com的适用或者因为该虚拟主机的使用将抓住所有的请求这些名字。

但是,如果您有:

<VirtualHost *:443> 
ServerName domain.com 
</VirtualHost> 

现在你需要定义为您的子域的一个新的通配符证书一个虚拟主机,你可以做到完美使用新的通配符证书* .example.com的:

<VirtualHost *:443> 
ServerName xxxxx.example.com 
</VirtualHost> 

,如果你想/需要使用相同的通配符证书为现在可以定义更多virtualhosts * .example.com的:

<VirtualHost *:443> 
ServerName yyyyy.example.com 
</VirtualHost> 

注意这些是虚拟主机的例子(显然你的虚拟主机会有更多的指令,特别是加载密钥和证书的指令等)。

,并简要,你需要考虑的事情:

  1. apache httpd的看着主机头知道哪个虚拟主机就必须交付请求。
  2. 如果您重叠名称或定义过于贪婪的serveraliases,如果先前的虚拟主机与请求的主机名相匹配,则进一步定义的虚拟主机可能永远不会收到请求。这是虚拟主机列表中的第一场胜利。
  3. Apache允许您为每个虚拟主机拥有1个证书,但是如果您在多个虚拟主机中使用相同的证书,则无关紧要。
  4. 如果您使用ServerAlias,则只需注意不重叠的名称和通配符。使用两个覆盖相同名称的虚拟主机将使httpd忽略同名的第二个虚拟主机。
  5. 如果您针对不同的虚拟主机有多个不同的文件,则它们的文件按字母顺序读取,因此如果您具有servername为1.example.com的虚拟主机.conf,并且为servername为1.example的虚拟主机。 com,b-virtualhost.conf将被忽略。
+0

谢谢你的详细解答。我真的不熟悉Apache。我通常在IIS上工作。但是,如果我们首先在主域上安装通配符证书(* .domain.com),它是否能够在同一时间在子域和主域上工作,我是否了解得很好? – Kamil

+0

* .example.com的通配符仅适用于everything.example.com,但大多数情况下,当您订购通配符时,它在其example.com和* .example.com中有两个有效名称,请检查通配符以确保example.com也作为证书中的有效名称添加为100%。 –