HTTPS通信流程:SSL/TLS握手全解析

2021,2022,2023年1-8月看了很多技术书籍,现在想来忘了很多,用到的也不多,但是因为提前接触过,所以很多新东西,接受起来,比预想的要容易些。最近突然想要回忆下HTTPS,居然回忆不起来了,哎。在此记录下。

HTTPS通信过程:

例如:打开https://www.csdn.net/ 的首页

1. 客户端发起请求(ClientHello)

javascript 复制代码
在打开一个https网址时先由客户端发起请求。
内容:客户端自身支持的SSL/TLS(Secure Sockets Layer安全套接层/Transport Layer Security传输层安全)版本,
加密套件列表(如TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256)、随机数(Client Random)。
目的:与服务端协商加密参数,启动安全连接。

2. 服务器响应(ServerHello + Certificate)

javascript 复制代码
内容:
1:ServerHello:服务端选择协议版本,加密套件,生成随机数(Server Random)
2:Certificate:发送数字证书(含公钥,数字签名),证明自身身份。

可选:可选ServerKeyExchange:若使用ECDHE等算法,发送额外密钥交换参数。

客户端会使用此证书内的公钥加密http的内容与服务端通信,而只有作为与公钥配
对的私钥才能解密通信内容,所以全世界只有此服务器可以知道你们的通信内容。除
非密钥泄露,或被破解。

3 客户端验证证书

javascript 复制代码
    证书链校验:验证服务器证书是否由可信CA签发,逐级追溯至根证书。
    有效期检查:确保证书未过期。
    域名匹配:检查证书中的域名(如SAN字段)与访问地址一致。
    吊销检查:通过CRL(证书吊销列表)或OCSP(在线证书状态协议)确认证书未被吊销。

失败处理:若验证失败(如证书过期、域名不匹配),浏览器会警告用户。

4. 密钥交换(ClientKeyExchange)

javascript 复制代码
非对称加密通信阶段:
 客户端生成预主密钥(Pre-Master Secret),用服务器公钥加密后发送。
 服务器用私钥解密,获取预主密钥。
会话密钥生成:
双方基于预主密钥、Client Random、Server Random,通过为随机数函数
(PRF)生成对称加密密钥(Master Secret)

非对称加密安全性高,但是加密性能差,所以用在协商对称加密密钥的阶段。
对称加密密钥协商完毕后,双方切换致基于此密钥的对称加密算法通信。

5. 加密通信开始

javascript 复制代码
    ChangeCipherSpec:双方通知对方切换至协商好的加密算法。
    Finished消息:发送加密的握手完成消息,验证密钥正确性。
    数据传输:使用会话密钥进行AES等对称加密,确保高效安全通信。

PKI(公钥基础设施)之余HTTPS的主要作用:

javascript 复制代码
1:数据加密
2:完整性保护:确保数据完整、未被篡改
3:不可抵赖性、不可否认性
4:身份认证
5:数字证书管理:CA/RA负责证书的签发、更新、吊销及CRL发布。

PKI除了用在HTTPS中,还可以用于:电子邮件、虚拟专用通道、数字文档签名盖章、软件保护、加密狗等领域
相关推荐
Vis-Lin1 小时前
BLE 协议栈:L2CAP 信道详解
网络·物联网·网络协议·蓝牙·iot·ble
北京耐用通信3 小时前
CC-Link IE转Modbus TCP集成实战:耐达讯自动化网关在五星级酒店节能改造中的应用
人工智能·物联网·网络协议·自动化·信息与通信
北京耐用通信3 小时前
工业自动化场景下耐达讯自动化的 CC-Link IE 转 Modbus TCP 技术方案与应用实践
人工智能·科技·物联网·网络协议·自动化
杨凯凡3 小时前
【002】HTTPS 粗解:证书、TLS 握手与对后端配置的影响
网络协议·http·https
dualven_in_csdn3 小时前
两台 H.323 终端点对点直连通信完整步骤
网络协议
z10_144 小时前
享住宅IP、长效代理ip是什么?有什么用?
网络·网络协议·tcp/ip
发光小北4 小时前
EtherCAT 转 CANopen/CAN 网关应用场景?
网络协议
AI_Claude_code5 小时前
ZLibrary访问困境方案二:DNS-over-HTTPS/TLS配置与隐私保护实践
爬虫·python·网络协议·http·网络安全·https·网络爬虫
邓霖涛5 小时前
nginx使用openSSL自签生成https相关证书
服务器·nginx·https
Zhu7585 小时前
【软件更新】在Ubuntu24 LTS中更新openssl到指定版本,例如openssl3.5.6 LTS
linux·ssh·ssl