【问题标题】:What exactly does "every SSL certificate requires a dedicated IP" mean?“每个 SSL 证书都需要一个专用 IP”到底是什么意思?
【发布时间】:2013-03-24 22:05:57
【问题描述】:

我读过一些关于 SSL 证书的文章,特别是我读到 SSL 证书“需要专用 IP 地址”。现在,我不确定这是什么意思;这是否意味着该证书需要一个独立于用于正常 HTTP 通信的 IP 地址的专用 IP 地址,或者只是它不能与其他 SSL 证书共享该 IP 地址?

澄清一下,我有一个具有专用 IP 地址的 VPS。 VPS 托管了很多不同的站点,包括主站点的几个子域,但只有主站点和子域需要 SSL。我可以使用我当前的 IP 地址简单地为 *.example.com 购买 SSL 证书,还是需要获得一个与 VPS 上的其他站点分开的证书?或者更糟糕的是,我是否需要获得一个与服务器上的所有 HTTP 流量分开的服务器?请记住,其他网站都不需要 SSL。

感谢您对该主题的任何澄清。


编辑:我担心的一些来源:

http://symbiosis.bytemark.co.uk/docs/symbiosis.html#ch-ssl-hosting

Is it necessary to have dedicated IP Address to install SSL certificate?

【问题讨论】:

    标签: http ssl https ssl-certificate


    【解决方案1】:
    1. 没有“SSL 证书”之类的东西。该术语具有误导性。 X.509 证书可用于不同目的(由其密钥用法和扩展密钥用法“属性”定义),特别是用于保护 SSL/TLS 会话。

    2. 证书不需要关于套接字、地址和端口的任何内容,因为证书是纯数据。

    3. 当使用 TLS 保护某些连接时,您通常使用证书来验证服务器(有时是客户端)。每个 IP/端口有一台服务器,因此通常服务器选择要使用的证书是没有问题的。

      HTTPS 是个例外——几个不同的域名可以引用一个 IP,而客户端(通常是浏览器)连接到同一个服务器以获得不同的域名。域名在请求中传递给服务器,该请求在 TLS 握手之后进行。

      这就是问题所在 - Web 服务器不知道要出示哪个证书。为了解决这个问题,TLS 中添加了一个新的扩展,名为 SNI(服务器名称指示)。但是,并非所有客户端都支持它。所以一般来说,每个域的每个 IP/端口都有一个专用服务器是个好主意。换句话说,客户端可以使用 HTTPS 连接到的每个域都应该有自己的 IP 地址(或不同的端口,但这并不常见)。

    【讨论】:

    • 等等,SNI is widely supported right?为什么每个域都需要自己的 IP?
    • @Pacerier 不,SNI 并没有看起来那么广泛支持。实际上,直到 2014 年,TLS 1.1 根本没有得到广泛支持,许多服务器使用旧版本的 OpenSSL,当请求包含 TLS 1.1 或 1.2 时,它就崩溃了。引用的答案还提到了浏览器支持并忘记了存在大量不是浏览器的 HTTPS 客户端(IIRC 浏览器是所有 HTTPS 客户端的少数)。最后,如果您阅读了我的回答,我已经写了“并非所有客户都支持它”。如果您不关心兼容性 - 没问题。
    • 您说SNI是为了解决“web服务器不知道要出示哪个证书”的问题。这是否意味着 SNI 必须在之前而不是在 TLS 握手之后发送?
    • @Pacerier TLS 握手由几个步骤组成,SNI 在握手期间发送。
    • 那么 MITM 不能嗅出 SNI 并知道您正在访问哪个域吗?
    【解决方案2】:

    SSL 证书不需要专用 IP 地址。 SSL 证书存储一个所谓的通用名称。浏览器将此通用名称解释为它们正在与之通信的服务器的 DNS 名称。如果公共名称与浏览器正在与之通信的服务器的 DNS 名称不匹配,浏览器将发出警告。

    您可以获得所谓的通配符证书,该证书适用于特定域内的所有主机。

    【讨论】:

      【解决方案3】:

      ...跟进@Eugene 的回答,提供有关兼容性问题的更多信息...

      根据this page from namecheap.comSNI 不起作用:

      • Windows XP + 任何版本的 Internet Explorer (6,7,8,9)
      • Internet Explorer 6 或更早版本
      • Windows XP 上的 Safari
      • 黑莓浏览器
      • Windows Mobile 最高 6.5
      • 至少在 Series60 上适用于 Symbian 的诺基亚浏览器
      • 至少在 Series60 上适用于 Symbian 的 Opera Mobile

      网站仍可通过 HTTPS 访问,但会出现证书不匹配错误。

      因此,当我们进入 2016 年时,我会大胆地站出来说:“如果你正在构建一个 现代网站(不支持旧浏览器),并且如果项目是小到无法负担专用 IP 地址,您可能会依靠 SNI 没问题。”当然,有成千上万的专家不同意这一点,但我们说的是实用,而不是完美的。

      【讨论】:

        【解决方案4】:

        ssl 证书公用名必须与域名匹配。您对 ip 地址没有任何要求,除非是证书提供商或 http 服务器软件施加的限制。

        编辑:查看网络,似乎谣言已经传播,因为 Apache 的 ssl 插件没有(至少在 2002 年没有)任何使用不同证书的机制基于主机名。在这种情况下,您必须在两个不同的 IP 地址上运行两个不同的 Apache Web 服务器。

        无论如何,在您的配置中,只使用一个 IP 应该没有任何问题,因为您不必使用两个不同的证书(因为您计划使用通配符证书)。

        无论如何,在花钱购买第二个 ip 或证书之前,我都会尝试使用自签名证书配置网络服务器。

        编辑 2:参考 apache 文档:

        http://httpd.apache.org/docs/2.2/vhosts/name-based.html

        现在似乎 (apache >= 2.2.12) 支持了

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-31
          • 1970-01-01
          • 2014-04-01
          • 1970-01-01
          • 2021-02-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多