Administrator
发布于 2017-04-23 / 5 阅读
0
0

同一IP下同时建两个网站并且同时开启HTTPS小记

TLS SNI是关键

  • 想这么搞是很久前的事了,但是当时试了一下之后发现同一个IP只能开一个HTTPS,后来有一天在TG群里面收到一个dalao指点,得知还有TLS SNI,然后就试了一下,完美解决

示例链接

下面开始说一下部署过程

  • 查看已安装的 Nginx 是否开启 TLS SNI,命令如下:
    nginx -V
    查看输出结果,如果
    TLS SNI support disabled
    表示没有开启,没有开启的话就需要手动开启一下了,开启教程可以参考BelinChung 通过开启 Nginx TLS SNI 来支持同一 IP 下多 SSL 证书
  • 但是lnmp一键包默认TLS SNI是支持的,这就省了一步,在实现同一IP下多HTTPS时一个常见的问题就是当使用同一个 IP 地址去配置两个或更多的HTTPS服务器的时候,出现证书不匹配的情況:
  • 这种情况下浏览器会获取默认的服务器证书(如上面例子的 www.example.com.crt)而忽视请求的服务器名,如输入网址:www.example.org,服务器会发送 www.example.com.crt 的证书到客戶端,而不是 www.exaple.org.crt。 这是因为 SSL 协议行为所致,SSL 连接在浏览器发送 HTTP 请求之前就被建立,Nginx 并不知道被请求的服务器名字,因此 Nginx 只会提供默认的服务器证书。
  • 解決这个问题最原始最有效的方法就是为每个 HTTPS 服务器分配独立的 IP 地址:
  • 然后打开网站去试试吧,理论上来说应该适用于同一IP下建N个网站同时启用HTTPS,但是我没有试验过。。。
  • 有任何问题欢迎留言讨论

评论