我有一个带有 SSL 证书的网站。假设它的名字是 example.com ,我设置了重写规则来将所有请求重定向到http://example.com要去https://example.com/这很有效。
但是,时不时地,我会遇到有人打字https://www.example.com/并且他们得到了 SSL 证书不匹配。因为该证书仅适用于 example.com。
在服务器将 SSL 证书发送到 Web 浏览器之前,首先进行重定向的最佳方法是什么?
答案1
没有办法先进行重定向,因为 SSL 连接必须先到位,然后 HTTP 连接(包含任何重定向)才能发生。
一些证书颁发机构将www.example.com
在证书上example.com
免费包含主题备用名称 - 这可能是最简单的解决方案;任何其他解决方案(SNI,第二个 IP www
)都涉及购买第二个证书。
答案2
抛出异常的不是服务器,而是浏览器。您需要获取涵盖 www.example.com 的证书或通配符证书来涵盖这种情况。
正在发生的事情是客户正在请求https://www.example.com由于 nginx 返回的是 example.com 的证书,因此它会抛出错误。在服务器端执行任何重定向之前,客户端都会抛出证书不匹配错误。