我可以在某些域名上使用 https,但不是在我的所有网站上都使用 https 吗?

我可以在某些域名上使用 https,但不是在我的所有网站上都使用 https 吗?

我有两个网站(家庭服务器和 linode VPS),一个网站上有一个域名的子域名,另一个网站上也有一些子域名。我在两个服务器上还有两个或三个其他域名。我目前在两个网站上都使用 Apache VirtualHost。它们目前都没有使用 https。

是否可以一次开始推出一个子域的 https,还是全部推出或全部不推出?我是否需要使用像 nginx 这样的前端,或者我可以在 Apache 中完成所有操作?

答案1

为了在 Apache 中支持 SSL,您需要VirtualHost为每个站点配置一个端口 443,这样您就可以一次对一个子域进行配置。请参阅Apache TLS/SSL 操作方法

答案2

您可以“一次开始滚动一个子域”。但是,如果您为所有虚拟域都设置了一个 IP,则无法限制 HTTPS 端口 443 只对部分虚拟域开放。

基于名称的虚拟主机根据 Host HTTP 标头为不同的网站提供服务。现在您有了 HTTP,当您在浏览器中输入“example.com”时,它会连接到您的 IP 并Host: example.com在请求标头中添加。这样,Web 服务器就会匹配已知的虚拟主机,或者如果未知则将其作为默认虚拟主机处理(例如,如果您直接在浏览器中输入 IP)。

现在对于 HTTPS 部分,情况有些不同。因为必须在发送 HTTP 标头之前建立 TLS 安全连接。因此,Web 服务器实际上无法知道要提供哪个证书。无论是 example1.com 还是 example2.com(例如)。在过去,这意味着每个 IP 只允许一个有效的 HTTPS 网站(好吧,多域证书可以工作,但我不记得有任何 CA 允许这样做)。即没有虚拟主机。但幸运的是TLS SNI扩展的工作方式与 HTTP 类似。不同之处在于,TLS 会话信息中传递的是域名,而不是 HTTP 标头。

现在考虑这一点,一旦您为一个网站启用 SSL example1.com,并为其生成证书,如果您输入https://example2.com它实际上会打开example1.com网站(因为它是 HTTPS 侦听器的唯一虚拟主机),但浏览器也会抱怨该网站提供了错误域名的证书(因为您的网络服务器没有 example2.com 的证书和它的虚拟主机)。

为了避免这种混淆,我建议您首先测试并准备好网站的所有证书和配置。然后一次性启用它们。至少如果您将它们全部托管在同一个 IP 上。如果它们有不同的 IP,我假设您明白您可以根据上述陈述分别启用 HTTP。

相关内容