前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >什么是 SNI?_snidel中文

什么是 SNI?_snidel中文

作者头像
全栈程序员站长
发布2022-09-20 11:16:02
9570
发布2022-09-20 11:16:02
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

参考: 链接1 链接2

介绍

是什么:SNI(Server Name Indication)是 TLS 的扩展,这允许在握手过程开始时通过客户端告诉它正在连接的服务器的主机名称。

作用:用来解决一个服务器拥有多个域名的情况。

在客户端和服务端建立 HTTPS 的过程中要先进行 TLS 握手,握手后会将 HTTP 报文使用协商好的密钥加密传输。

握手参考:链接

什么是 SNI?_snidel中文
什么是 SNI?_snidel中文

在 TLS 握手信息中并没有携带客户端要访问的目标地址。这样会导致一个问题,如果一台服务器有多个虚拟主机,且每个主机的域名不一样,使用了不一样的证书,该和哪台虚拟主机进行通信?

和 HTTP 协议用来解决服务器多域名的方案类似:HTTP 在请求头中使用 Host 字段来指定要访问的域名。

TLS 的做法,也是加 Host,在 TLS 握手第一阶段 ClientHello 的报文中添加。

SNI 在 TLSv1.2 开始得到支持。从 OpenSSL 0.9.8 版本开始支持。所以基本市场上的终端设备都支持。

测试

使用 WireShark 抓包看一下 Clien tHello:

SNI信息是在握手的过程中,确切说是在客户端发送给服务端的第一个握手包中传递的信息。 这时候SSL连接还未建立起来,因此SNI信息是明文传输的。

什么是 SNI?_snidel中文
什么是 SNI?_snidel中文

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168234.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 测试
相关产品与服务
SSL 证书
腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档