首页/安全/加密与证书速查/SNI 服务器名称指示
TLS 与 HTTPS60 条

SNI 服务器名称指示

RFC 6066 定义的扩展:客户端在 ClientHello 中以明文告知目标主机名,服务端据此选择证书与虚拟主机;缺少 SNI 时会落到默认站点。

加密与证书速查安全更新于 2026-10-12
标准RFC 6066 §3
传输TLS 1.2 及以前为明文;TLS 1.3 也在 ClientHello 中明文
作用同一 IP 上部署多域名证书
隐私ECH 扩展用于加密该字段(推进中)

指定 SNI 访问(排查默认证书问题)

指定 SNI 访问(排查默认证书问题)
openssl s_client -connect 203.0.113.10:443 -servername example.com </dev/null | grep 'subject='
openssl s_client -connect 203.0.113.10:443 </dev/null | grep 'subject='   # 不带 SNI
老客户端(早期 Java、部分 IoT 库)可能不发送 SNI,服务端需提供合理的默认站点或升级客户端。

易错点

  • 用 IP 直连测试 https 时会因缺少 SNI 拿到默认证书,容易误判为证书配置错误
  • 多域名共用 IP 时忘配 default_server,会导致未匹配域名落到默认 server 块

数据来源与参考

  • RFC 6066(TLS 扩展:SNI)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌