跳到主内容
快讯直播
AI智模界
AI 词典

TLS 握手:网址带 https 不等于安全

一句话定义

TLS 握手(TLS Handshake)是客户端与服务器在传输真正的业务数据之前,先进行几轮到几十毫秒不等的协商,用来确认两件事:对面是谁,以及双方接下来用什么密钥通信。TLS(Transport Layer Security,传输层安全协议)是 HTTPS 的基础。

用取快递打个比方

你到一家自称“官方认证”的店取件:

1. 你先开口:我要找某某店,我支持这些对暗号的方式。对应 ClientHello,里面会带上支持的协议版本、密码套件列表,以及 SNI(Server Name Indication,服务器名称指示),也就是你要访问的域名;这个域名在握手阶段默认以明文出现。

2. 店家出示营业执照,并当场证明执照上那把私钥确实在自己手里。这张“执照”就是服务器证书。

3. 你打电话给发证机关核实:证书是不是受信任的 CA 签发的、域名对不对得上、有没有过期、有没有被吊销。这就是验证证书链。

4. 双方各自算出一把本次会话专用的对称密钥(常见做法是 ECDHE 密钥协商),后面所有数据都用这把一次性密钥加密。

请注意:证书验证和密钥协商都发生在握手阶段,一次就完成。加密的数据传输在握手成功之后才开始。

和相邻概念的区别

概念解决的问题发生在哪一层
证书验证对面是不是真的那个域名握手阶段
密钥协商后面的话怎么加密、密钥怎么来握手阶段
对称加密传输数据保密性与完整性握手之后
登录鉴权你是不是这个账号的主人应用层

几个常见误解:HTTPS 只是 HTTP 跑在 TLS 之上,不是另一套协议;地址栏出现小锁,只能说明这条连接加密了、证书对得上域名,不代表网站本身可信、不代表没有钓鱼;证书本身也不等于加密,它解决的是身份问题,加密靠密钥协商。握手也不等于登录,握手只管通道安全。

对从业者和普通人的实际意义

握手失败的原因,多数不是“网络不好”,而是以下几类:

  • 证书链不全。服务器只发了站点证书,没有发中间证书;浏览器有时靠缓存补上,但很多 SDK、命令行工具和 Java 客户端会直接报错。
  • 与 SNI 相关的问题。一个 IP 上承载多个站点,客户端没带 SNI,或者中间设备改写了 SNI,服务器就会返回别的站点的证书,表现为“证书域名不匹配”。
  • 证书过期、域名不匹配、根证书不在信任库里(旧设备、精简容器镜像常见)。
  • 设备时间不同步。证书有效期判断依赖本地时钟,时间偏差太大会直接导致验证失败。

排查时不要只在浏览器里点,先分清报错属于证书链、主机名不匹配,还是协议版本或密码套件不匹配;再用 openssl s_client 这类工具,带上 -servername 指定域名,查看服务器实际返回的完整证书链。具体参数以官方文档为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。