云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

https协议_https协议websocket问题

jxf315 2025-02-21 13:48:29 教程文章 23 ℃

https介绍

https(Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道.

可以理解为http的安全版,在http(应用层)加入了ssl/tls(安全层).

TLS(Transport Layer Security,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性.

SSL(Secure Socket Layer,安全套接字层)位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层. SSL通过互相认证,使用数字签名确保完整性,使用加密确保私密性,以实现客户端和服务器之间的安全通讯.

https默认使用443端口,而http默认使用80端口.

https服务器需要部署证书和私钥.

数字证书由CA(Certificate Authority)机构进行颁发,包括持有人相关信息,有效期,数字签名,服务器公钥,指纹.

非对称加密用于生成双方约定的对称加密密钥,数据通信使用对称加密.

证书合法性验证

客户端验证证书的有效期,颁发机构,是否被吊销等验证,这些验证只是基础验证不能防止证书被篡改.

数据证书防篡改验证

指纹,CA机构将相关信息通过单向加密生成指纹(sha-1,sha-256).

签名,CA机构用其提供的私钥对指纹进行非对称加密生成签名.

验签,客户端用数字证书提供的公钥,再用相同的签名算法(如:SHA-384的ECDSA)进行验签,如果指纹相同则信任.

ssl握手

PMS(预主密钥),使用服务端公钥加密的预主密钥. MS(主密钥).


ssl加密通信


报文结构

分层

内容

格式

应用层

http报文

http首部字体,主体数据

传输层

tcp报文

tcp首部字体(端口号),http报文

网络层

ip数据包

ip首部字体(ip地址),tcp报文

数据链路层

以太网数据帧

以太网首部(mac地址),ip数据包

TCP三次握手

指令

含义

URG

紧急指针是否有效。为1,表示某一位需要被优先处理

ACK

确认号是否有效,一般置为1。

PSH

提示接收端应用程序立即从TCP缓冲区把数据读走。

RST

对方要求重新建立连接,复位。

SYN

请求建立连接,并在其序列号的字段进行序列号的初始值设定。建立连接,设置为1

FIN

希望断开连接。

Seq(Sequence number),序号 Ack(Acknowledgment number),确认号

用wireshark查看相关信息,先发一次请求,号码使用相对大小.

Statistics=>Flow Graph


TCP四次挥手


为什么连接为三次,而挥手为四次

关闭连接时,需要等待数据报文全部传送完成,所以先应答(ACK),传输完成后,再(FIN).

TIME-WAIT为什么要等2MSL(最大报文段生存周期)

时间的大小为一个来回,主要是为了确保对方收到(ACK),如果对方再次发送(FIN)指令说明没有收到,这时可以再次发送(ACK),的不然再继续等.

但如果是短连接,服务器主动关闭,当并发量大的时候可能会出现大量的TIME-WAIT. 可以考虑减少等待时间,或者端口重用.

https抓包

用Charles抓包https.

抓取电脑https包

电脑安装Charles证书

Help -> SSL Proxying -> Install Charles Root Certificate

如果没有权限的话,先Export Charles 的证书和私钥,用钥匙串访问手动打开安装,
在Mac应用中,"钥匙串访问",找到"Charles Proxy CA",
"信任"->"使用此证书时"->"始终信任",

设置SSL Proxying Settings,添加*:443

勾选macOS Proxy即可抓取https包

抓取手机https包

Help -> SSL Proxying -> Install Charles Root Certificae on a Mobile Device or Remote Browser

证书下载地址:chls.pro/ssl

提示无法安装,没有可用证书,是因为权限问题.

在电脑端打开,证书下载地址,然后传到手机端(如用钉钉),
不要直接打开,找到证书所在目录,然后点击它就可以安装证书了.

代理设置

Proxy Settings设置Port如8888.

手机wifi手动设置代理,同一个局域网中电脑的ip地址,端口填刚才设置的8888,即可.

请求劫持

Breakpoints Settings里添加接口断点,可以拦截请求和响应,在调试的时候挺好用的.

最近发表
标签列表