我已经阅读了一些关于SSL证书的内容,特别是我读过SSL证书“需要一个专用的IP地址”。现在,我不确定这个意思;这是否意味着证书需要与用于正常HTTP通信的IP地址分开的专用IP地址,或者只是因为它不能与其他SSL证书共享IP地址?
为了澄清,我有一个带有专用IP地址的VPS。 VPS托管了很多不同的站点,包括主站点的几个子域,但只有主站点和子域需要SSL。我是否可以使用当前的IP地址为 * .example.com 购买SSL证书,或者我是否需要获得与VPS上其他站点分开的SSL证书?或者更糟糕的是,我是否需要获得与服务器上所有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?
答案 0 :(得分:35)
没有“SSL证书”这样的东西。该术语具有误导性。 X.509证书可以用于不同目的(由其密钥用法和扩展密钥用法“属性”定义),特别是用于保护SSL / TLS会话。
证书对套接字,地址和端口不需要任何内容,因为证书是纯数据。
在使用TLS保护某些连接时,通常使用证书对服务器(有时是客户端)进行身份验证。每个IP /端口有一个服务器,因此通常服务器选择使用哪个证书没有问题。
HTTPS是例外 - 几个不同的域名可以引用一个IP,而客户端(通常是浏览器)连接到同一服务器以获取不同的域名。域名在请求中传递给服务器,在 TLS握手后 >>。
出现问题的地方 - 网络服务器不知道要出示哪个证书。为了解决这个问题,在TLS中添加了一个新的扩展名,名为SNI(服务器名称指示)。但是,并非所有客户都支持它。因此,一般来说,每个域的每个IP /端口都有一个专用服务器是个好主意。换句话说,客户端可以使用HTTPS连接的每个域应该有自己的IP地址(或不同的端口,但这不常见)。
答案 1 :(得分:5)
SSL证书不需要专用的IP地址。 SSL证书存储所谓的通用名称。浏览器将此通用名称解释为与其通信的服务器的DNS名称。如果公共名称与浏览器正在与之通信的服务器的DNS名称不匹配,则浏览器将发出警告。
您可以获得一个所谓的通配符证书,这对某个域内的所有主机都是可以接受的。
答案 2 :(得分:3)
...跟进@Eugene的答案,了解有关兼容性问题的更多信息......
根据this page from namecheap.com SNI不起作用:
网站仍然可以通过HTTPS使用,但会出现证书不匹配错误。
因此,当我们进入2016年时,我会冒昧地伸出脖子说:“如果你正在构建一个现代网站(不支持旧浏览器),并且项目是如此小,以至于它无法负担专用的IP地址,你可能会依赖SNI。“当然,有成千上万的专家不同意这一点,但我们谈的是实用,而不是完美。
答案 3 :(得分:0)
ssl证书commmon名称必须与域名匹配。您对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)支持