SNI
我们知道,在 Nginx 中可以通过指定不同的 server_name 来配置多个站点。HTTP/1.1 协议请求头中的 Host 字段可以标识出当前请求属于哪个站点。但是对于 HTTPS 网站来说,要想发送 HTTP 数据,必须等待 SSL 握手完成,而在握手阶段服务端就必须提供网站证书。对于在同一个 IP 部署不同 HTTPS 站点,并且还使用了不同证书的情况下,服务端怎么知道该发送哪个证书?
Server Name Indication,简称为 SNI,是 TLS 的一个扩展,为解决这个问题应运而生。有了 SNI,服务端可以通过 Client Hello 中的 SNI 扩展拿到用户要访问网站的 Server Name,进而发送与之匹配的证书,顺利完成 SSL 握手。
参考文档:
新的nginx集群配置了多个ssl证书,所以客户端必须支持SNI才能正确访问https的域名。
各个客户端需要升级到支持SNI的版本才可以,目前已知的有:
1. 升级JDK至少到1.7。
2. 升级HttpClient至少到4.3.2。
转载于:https://blog.51cto.com/tenderrain/2131077