HTTPS-思君如满月,日日减清辉
HTTP我们知道了,但是HTTPS我还不知道。
虽然我知道HTTPS怎么用,但是我不清楚HTTPS的流程是什么。
当我使用fiddler、charles、mitmporxy进行抓包的时候,如果是https的流量,都需要安装证书,这是为什么?
当我使用python访问https接口的时候,如果开着抓包,会有报错这是为什么?
https比http复杂在哪里?
如何使用wireshark分析https流量。
为什么socks5代理不需要安装证书?
Nginx开启ssl会话复用,能提升多少性能?
这一系列的问题困扰着我。
HTTPS应该被拿下。
我首先是看了图解HTTP,然后又看了老青菜的博客,https://laoqingcai.com/https/,我感觉我对HTTPS已经有了初步的认识,所以接下来我要详细的看一看,当然了如果遇到算法之类的我还是会跳过的,毕竟我不认为自己能够发明出一种类似于RSA的算法,但是理解算法是干什么的,这点智商我还是有的。
wireshark抓包实战,因为我抓到的是tls1.2所以就按照这个版本来分析。
三次握手之后开始ClientHello
1 Client Hello
此时为明文的
Random
Session ID
会话ID,如果有的话,表示Client希望使用会话的连接,即恢复会话。当服务端存在对应会话可以返回对应的值。
服务端可能返回同一个sessionid,也可能返回一个新的sessionid
Cipher Suites: 加密的方法列表
2 Server Hello
Cipher Suite
3 Server Certificate
返回证书的一些信息
Certificates
4 Server Key Exchange (HelloDone)
标志着ssl握手协商阶段的结束
5 client key exchange
这里面使用的是DH协商算法。
也就是指定ECDHE为密钥协商算法,所以这里Client只要传递premaster secret的协商参数,
6 change Cipher Spec
7 Encrypted Handshake Message
这次握手协商是否能够成功,主要以服务器是否能够正确解密该报文作为判断标准
8 change Cipher Spec
9 服务器也发送finished报文
10 application data(http)
服务器和客户端的finished报文交换完毕之后,ssl连接就算建立完成。当然,通信会收到ssl的保护。从此处开发进行应用层协议的通信,即发送http报文。
比如我抓取了和github.com进行交互的过程,如下:
但是这里使用的是tls1.3不太好理解。
11 application data
http响应
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix