单个域名和多个域名的单个证书 - Apache

单个域名和多个域名的单个证书 - Apache

我在一台具有单个 IP 地址的服务器上托管多个网站。我为其中一个域名准备了一个证书。有没有办法配置 Apache,使证书仅适用于该单个域名而不适用于单个 IP 地址上的其他域名?目前设置有效,但所有域名都使用同一个证书,这显然不是我想要的。我不想为这些其他域名设置 SSL,而是只禁用除该域名之外的所有域名的 SSL 功能。

一个例子将会非常有帮助!

谢谢!

答案1

由于 SSL 的典型工作方式,您想要的是不可行的。当您了解 https 的工作原理时,很容易理解为什么。当浏览器建立 HTTP 连接时,首先会创建一个 TCP 连接,然后开始通过该 TCP 连接使用 HTTP 协议。HTTP 协议为客户端提供了一种方式来表示“我打算从名为‘www.example.com’的服务器获取页面”,这个服务器名称是 apache 用来决定使用哪个 VirtualHost 的名称。

使用 HTTPS 时,会发生以下情况:建立 TCP 连接,然后协商 SSL(服务器将证书发送到客户端,客户端验证证书是否合法,它们交换会话密钥),然后它们通过此 SSL 加密的 TCP 连接进行 HTTP 通信,只有这样,客户端才能说出它们打算与哪个服务器名称通信。

因此,这里的问题是,在服务器知道他们正在尝试与哪个服务器通信之前,他们已经协商了 SSL 连接。

服务器名称识别旨在扩展 SSL/TLS 以便让客户端在 SSL 协商中指定服务器名称,但目前浏览器尚未提供足够广泛的支持。

相关内容