SNI

SNI背景介绍

SNI (Server Name Indication)主要解决一台服务器只能使用一个证书(一个域名)的缺点,随着服务器对虚拟主机的支持,一个服务器上可以为多个域名提供服务。有 SNI 机制后,可以在同一个IP 下绑定多个证书,但是客户端在请求时需要先带上域名,这样服务端才能找到对应的 SSL 证书,因此SNI必须得到支持才能满足需求
支持SNI的客户端获取到的server证书
不支持SNI的客户端获取到的server证书

命令行测试

模拟支持SNI的浏览器获取到的证书,使用以下命令测试:
openssl s_client -connect www.appnode.com:443 -servername www.appnode.com -showcerts

模拟不支持SNI的浏览器获取到的证书,使用以下命令测试:
openssl s_client -connect www.appnode.com:443 -showcerts

对于不支持 SNI 的客户端

  • 建议客户端升级或使用新版本的浏览器(如Chrome、Firefox等)
  • 如果是微信、支付宝第三方回调,需要让其调用源站IP,绕过Web应用防火墙