Http “究竟是什么?”;每个SSL证书都需要一个专用IP“;什么意思?

Http “究竟是什么?”;每个SSL证书都需要一个专用IP“;什么意思?,http,ssl,https,ssl-certificate,Http,Ssl,Https,Ssl Certificate,我读了一些关于SSL证书的内容,特别是我读到SSL证书“需要一个专用的IP地址”。现在,我不确定这是什么意思;这是否意味着证书需要一个独立于用于正常HTTP通信的IP地址的专用IP地址,或者只是它不能与其他SSL证书共享IP地址 为了澄清,我有一个专用IP地址的VPS。VPS承载着许多不同的站点,包括主站点的几个子域,但只有主站点和子域需要SSL。我可以简单地使用我当前的IP地址为*.example.com购买SSL证书,还是需要获得一个独立于VPS上其他站点的证书?或者更糟糕的是,我是否需要获

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

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

谢谢你对这个话题的任何澄清


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


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

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

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

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

编辑2:参考apache文档:


现在看来(apache>=2.2.12)支持SSL证书,SSL证书不需要专用IP地址。SSL证书存储所谓的公共名称。浏览器将此公用名称解释为与之对话的服务器的DNS名称。如果公用名称与浏览器正在与之通信的服务器的DNS名称不匹配,浏览器将发出警告

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

  • 没有“SSL证书”这样的东西。这个词有误导性。X.509证书可用于不同的目的(根据其密钥使用和扩展密钥使用“属性”的定义),特别是用于保护SSL/TLS会话

  • 证书不需要任何关于套接字、地址和端口的信息,因为证书是纯数据

  • 在保护与TLS的某些连接时,通常使用证书对服务器(有时是客户端)进行身份验证。每个IP/端口有一台服务器,因此服务器选择使用哪个证书通常没有问题

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

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


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

    根据SNI的说法,SNI在以下方面不起作用:

    • Windows XP+任何版本的Internet Explorer(6,7,8,9)
    • Internet Explorer 6或更早版本
    • WindowsXP上的Safari
    • 黑莓浏览器
    • Windows Mobile高达6.5
    • 诺基亚Symbian浏览器,至少在60系列上
    • Opera Mobile for Symbian至少系列60
    网站仍然可以通过HTTPS访问,但会出现证书不匹配错误


    因此,当我们进入2016年时,我会大胆地说,“如果你正在建设一个现代网站(不支持旧浏览器),并且如果项目太小,无法负担专用IP地址,那么你可能会很好地依赖SNI。”当然,有成千上万的专家不同意这一点,但我们谈论的是实用,而不是完美。

    等等?为什么每个域都需要自己的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并知道您正在访问哪个域吗?