上一篇
https访问网站的具体流程
- 行业动态
- 2025-04-27
- 2
HTTPS流程:客户端请求,服务器返证书,验证后非对称协商
HTTPS访问网站的具体流程
用户输入URL并发起请求
- 操作:用户在浏览器地址栏输入
https://example.com
并按下回车键。 - 解析:浏览器解析URL,识别协议为HTTPS(而非HTTP),开始建立安全连接。
SSL/TLS握手(建立安全通道)
- 客户端Hello:浏览器向服务器发送支持的加密算法列表、TLS版本、随机数等信息。
- 服务器Hello:服务器从客户端支持的算法中选择一个,并返回自己的数字证书(包含公钥)、随机数等信息。
- 证书验证:浏览器验证服务器证书的合法性,包括:
- 证书是否由可信CA机构签发。
- 证书是否过期或被吊销(通过CRL或OCSP检查)。
- 证书中的域名是否与当前访问的域名匹配。
- 生成会话密钥:浏览器生成一个随机会话密钥,用服务器证书中的公钥加密后发送给服务器。
- 服务器解密:服务器用自己的私钥解密会话密钥,双方后续通信使用该对称密钥加密数据。
数据传输(加密通信)
- 对称加密:使用协商好的会话密钥(如AES-GCM)对HTTP请求/响应数据进行加密。
- 数据完整性:通过校验码(如HMAC或AEAD)确保数据未被改动。
- 传输数据:加密后的数据在TCP连接上传输,外部无法直接解析内容。
连接关闭或会话恢复
- 正常关闭:通信结束后,浏览器和服务器通过TLS协议关闭连接,释放资源。
- 会话恢复:若短时间内再次访问同一服务器,可通过Session ID或Ticket恢复会话,避免重复握手。
关键步骤与技术对照表
步骤 | 描述 | 关键技术 |
---|---|---|
客户端Hello | 发送支持的加密算法、TLS版本、随机数 | TLS Handshake Protocol |
服务器Hello | 选择加密算法,返回证书和随机数 | 非对称加密(RSA/ECDHE) |
证书验证 | 验证证书合法性(CA签名、有效期、域名匹配) | X.509证书、CRL/OCSP |
会话密钥生成 | 客户端生成密钥并用服务器公钥加密,服务器解密 | RSA/ECDHE密钥交换 |
数据传输 | 使用对称密钥加密通信内容 | AES-GCM、ChaCha20-Poly1305 |
连接关闭 | 释放TLS连接资源或复用会话 | TLS Session Resumption(ID/Ticket) |
相关问题与解答
问题1:HTTP和HTTPS的主要区别是什么?
解答:
- 传输协议:HTTPS在HTTP基础上增加了SSL/TLS层,用于加密通信。
- 安全性:HTTPS通过加密防止数据被窃听或改动,而HTTP是明文传输。
- 端口号:HTTP默认使用80端口,HTTPS默认使用443端口。
- 证书需求:HTTPS需要服务器提供有效的数字证书,HTTP无需证书。
问题2:为什么HTTPS需要数字证书?
解答:
- 身份验证:证书由CA机构签发,证明服务器的真实身份,防止假冒。
- 密钥交换:证书中的公钥用于协商会话密钥,确保密钥不被第三方截获。
- 信任链:浏览器预装CA根证书,通过证书链验证服务器可信度,建立