我有一个带专用 IP 的 VPS。我在这个服务器上托管了几个网站。我可以在其中一个网站上拥有 SSL 证书,同时仍在同一个 IP 上托管其他网站吗?其他网站不需要 SSL。我之所以问这个问题,是因为我读到 SSL 需要专用 IP。
编辑:我在灯设置中使用 apache。
答案1
每个 HTTPS 主机+端口(或者准确地说,每个证书)都需要一个不同的 IP 地址,因为某些证书可能有多个主题备用名称),因为客户端在连接到 HTTPS 端口时无法告诉服务器它想要哪个主机(因此应该使用哪个证书),除非您使用服务器名称指示(这是一个似乎越来越多地受到支持的 SSL/TLS 扩展)。
普通 HTTP 虚拟主机在与 HTTPS 使用的端口(通常为 443)不同的端口(通常为 80)上运行,并且不受此限制的影响。
即使您不使用 SNI(在这种情况下您只能每个 IP + 端口使用一个证书),您也可以拥有任意数量的普通 HTTP 虚拟主机。
像这样的配置应该可以工作(在中指定端口号VirtualHost
):
<IfModule mod_ssl.c>
<VirtualHost www.name1.example:443>
ServerName www.name1.example
SSLEngine on
SSLCertificateFile /etc/...
SSLCertificateKeyFile /etc/...
...
</VirtualHost>
</IfModule>
# (optional)
<VirtualHost www.name1.example:80>
....
</VirtualHost>
<VirtualHost www.name2.example:80>
....
</VirtualHost>
答案2
SSL 证书以 IP 为基础工作。如果其他网站以后需要 SSL,则您的网站需要有单独的 IP。
答案3
你没有提到你使用的是什么 Web 服务器,例如 IIS、Tomcat 等?
一般来说,你可以将 Web 服务器配置为需要 SSL一些它所托管的网站,例如,您可以在 IIS 中执行此操作。
在 Tomcat 中,您必须启用 SSL 连接器并将其配置为使用您的证书。
在这种情况下,必须从安全端口访问网站。需要纯 http 的网站仍然可以运行
ssl 需要专用 IP
这取决于你的意思。通常证书颁发给 IP 或 FQDN,但这不是强制性的。缺陷在于,如果你的 Web 客户端检查主机名和证书主题名称,它们可能会拒绝连接。