这是针对同一 IP 上有多个 SSL 证书的解决方案吗

这是针对同一 IP 上有多个 SSL 证书的解决方案吗

我在 VPS 上运行 CentOS。我阅读了一些关于在同一系统上拥有多个 SSL 证书的指南,但我无法使基本操作正常工作。

我得到的对我最有意义的指南是执行以下操作。在 CentOS 中,我可以创建虚拟 NIC。所以我首先创建了 2 个虚拟 NIC。192.168.10.1、192.168.10.2。

现在我在 ISP manager Pro 中工作,因此这是在我的主 IP 1.1.1.1 上监听

对于每个网站,我都让它们监听 192.168.10.1:80、192.168.10.1:443

在 hosts 文件中我添加了以下 2 个条目

192.168.10.1 第一个.com 192.168.10.2 第二个.com

现在奇怪的是,当我浏览 1st.com 时,我没有找到位于 192.168.10.1 的网站,而是找到了位于我的主要 IP 1.1.1.1 的网站

我应该做类似的事情转发或者路由使该设置可以工作?

基本问题是:这种设置能起作用吗? SSL 证书是基于 IP 地址,还是基于主机名,1st.com 和 2nd.com。

资源:使用 IP 别名在单个网卡上托管多个 SSL 站点

答案1

通常情况下,每个 IP 地址一次只有一个证书,因为服务器在初始握手期间(在看到 HTTP Host 标头之前)提交证书。但是服务器名称指示 (SNI) 改变了这种情况,它允许客户端在 TLS 握手期间发送服务器的 Host。

我认为你的想法不太正确。假设你希望你的两个站点可以公开访问,那么在某个时候你必须指定(通过 DNS),1st.com 和 2nd.com 都位于 xxxx(公共 IP)。然后,你需要使用 SNI 来区分它们。不需要虚拟 NIC 或本地 IP。

答案2

您想要做的事情是可能的 - 这就是我在一台服务器上运行 30 个支持 SSL 的站点的方法。

如果您想不使用 SNI(据我所知,大多数 Win XP 浏览器都不支持 SNI),则需要两个公共 IP 地址 - 比如 1.1.1.2 和 1.1.1.3。然后,根据您的托管服务提供商的支持,您可以执行以下任一操作:

  1. 在您的 2 个虚拟 NIC 上配置这些公共 IP 地址 - 例如 eth0:1 是 1.1.1.2,eth0:2 是 1.1.1.3。然后适当配置 Web 服务器,并确保 1st.com 和 2nd.com 的 DNS 条目指向这些公共 IP 地址。
  2. 将私有地址保留在虚拟 NIC 上,并在 1.1.1.2 和 192.168.10.2 之间以及 1.1.1.3 和 192.168.10.3 之间设置网络地址转换,并确保 1st.com 和 2nd.com 的 DNS 条目指向这些公共 IP 地址。

当您说您已将这些条目添加到“hosts 文件”时,那是您服务器上的 hosts 文件,还是您正在浏览的台式电脑上的 hosts 文件?与 1st.com 和 2nd.com 关联的 DNS 条目是什么?如果它们都指向 DNS 中的 1.1.1.1 IP 地址,这也许可以解释为什么当您浏览时最终会进入 ISP 管理器网站https://1st.com。我还会检查 ISP 管理器配置为监听哪些 IP 地址 - 它可能只是抓取服务器上所有可用 IP 地址上的端口 80 和 443。

答案3

如果没有 SNI,每个公共 IP 地址只能拥有一个证书。在 SNI 完全受支持之前,最好的选择是使用包含所有需要保护的主机名的单个统一通信证书。

相关内容