我有一个SSL证书的网站。 假设它被称为example.com,我有一个重写规则设置为redirect任何请求到http://example.com去https://example.com/这很好。
但是,我偶尔会遇到类似https://www.example.com/的用户,并且他们获得的SSL证书不匹配。 由于该证书仅适用于example.com。
在服务器将ssl证书发送到Web浏览器之前,首先执行redirect的最佳方法是什么?
无法首先执行redirect,因为SSL连接必须在HTTP连接(包含任何redirect)可能发生之前就位。
一些证书颁发机构将www.example.com作为example.com的证书上的主题替代名称,不收取额外费用 – 这可能是最简单的解决scheme; 任何其他解决scheme(SNI, www的第二个IP)都涉及购买第二个证书。
服务器不是抛出exception的那个。 这是抛出exception的浏览器。 您需要获得涵盖www.example.com或通配证书的证书才能涵盖此案例。
发生了什么事是客户端正在请求https://www.example.com,并且由于nginx返回与example.com的证书它抛出错误。 客户端将在服务器端进行任何redirect之前抛出证书不匹配错误。