托管服务要求我购买公共 IPv4 才能使用我自己的 25 美元证书,这正常吗?

托管服务要求我购买公共 IPv4 才能使用我自己的 25 美元证书,这正常吗?

我想,这是一个不言自明的标题。

我希望我的网站只使用 https,但是他们(网络托管服务)在管理中声称我需要从他们那里购买一个公共 IPv4 地址,然后才能安装我在其他地方购买的证书。

我以为 x.509 证书根本不与 IP 地址绑定。这样的要求是否有任何技术原因,或者这只是一种营销理念,让人们为他们不需要的服务付费?

答案1

此限制是由于 SSL/TLS 协议的技术限制造成的。

在共享主机上,基于名称的虚拟主机用于使用同一 IP 地址为具有不同域名的网站提供服务。但是,由于域名不在 SSL 握手中发送(在建立 SSL 连接后在 HTTP 请求中发送),因此服务器无法根据域名从特定 IP 地址上的多个 SSL 证书中进行选择。因此,每个 IP 地址只能使用一个证书。

尽管服务器名称指示(SNI)通过在 SSL 握手中提供域名来规避这一限制,这是一个相对较新的扩展(2006 年推出) 并非普遍支持。特别是,Windows XP 上的 Internet Explorer 不支持 SNI。因此,许多服务器仍然存在此限制,并且使用 SSL 证书需要专用 IP 地址。

答案2

StackOverflow 上的另一个答案可以解释发生了什么:来自(https://stackoverflow.com/questions/15783990/what-exactly-does-every-ssl-certificate-requires-a-dedicated-ip-mean

  • 根本没有“SSL 证书”这样的东西。这个术语具有误导性。X.509 证书可以颁发用于不同目的(由其密钥使用和扩展密钥使用“属性”定义),特别是用于保护 SSL/TLS 会话。
  • 证书不需要任何与套接字、地址和端口相关的内容,因为证书是纯数据。
  • 在使用 TLS 保护某些连接时,通常使用证书来验证服务器(有时也验证客户端)。每个 IP/端口都有一个服务器,因此服务器选择使用哪个证书通常没有问题。HTTPS 是个例外——几个不同的域名可以引用一个 IP,而客户端(通常是浏览器)会针对不同的域名连接到同一台服务器。域名在请求中传递给服务器,该请求在 TLS 握手之后进行。问题就在这里——Web 服务器不知道要出示哪个证书。为了解决这个问题,TLS 中添加了一个新的扩展,名为 SNI(服务器名称指示)。但是,并非所有客户端都支持它。所以一般来说,每个域的每个 IP/端口都有一个专用的服务器是个好主意。换句话说,客户端可以使用 HTTPS 连接到的每个域都应该有自己的 IP 地址(或不同的端口,但这并不常见)。

现在我个人已经在 IP 基础上使用了证书,但也在我的服务器上以域为基础使用了证书,我的服务器在一个 IP 地址上使用多个域的多个证书。因此,每个 SSL 证书不需要一个 IP,但它可以使事情更安全一些。

相关内容