HTTP与HTTPS握手的那些事
先决条件
说起这两次握手,有些事情需要提前说明。
HTTP和TCP/IP有什么区别?
TPC/IP协议是传输层协议,主要解决如何在网络中传输数据,而HTTP是应用层协议,主要解决如何封装数据。WEB使用HTTP协议作为应用层协议封装HTTP文本信息,然后使用TCP/IP作为传输层协议发送到网络。
下图试图显示不同的TCP/IP和其他协议在原始OSI(开放系统互连)模型中的位置:
PS:表格来源于网上数据
什么是CA证书?
CA(Certificate Authority)是负责管理和颁发证书的第三方权威机构,受到各行业和公众的信任和认可。
CA证书是CA颁发的证书,可以用来验证网站是否可信(对于HTTPS来说)、文件是否可信(是否被篡改)等。它也可以用一个证书来证明另一个证书是可信的,顶级证书称为根证书。除了根证书(证明自己是可靠的)之外,其他证书都要依靠更高级别的证书来证明自己。
HTTP三次握手
超文本传输协议是互联网上使用最广泛的网络协议。因为信息是以明文传输的,所以被认为是不安全的。至于HTTP的三次握手,其实是用三次TCP握手来确认一个HTTP连接的建立。
如下图所示,SYN(同步)是TCP/IP建立连接时使用的握手信号、序列号和确认号。当三个箭头指向时,表示三次握手,完成三次握手,客户端和服务器开始传输数据。
PS:图片来源于网络资料
第一次握手:客户端向服务器发送syn包(syn=j),进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包时,必须确认客户的SYN(ack=j 1)并发送SYN包(syn=k),即SYN ACK包。此时服务器进入SYN_RECV状态;
三次握手:客户端从服务器接收SYN+ACK包,并向服务器发送确认包ACK(ack=k 1)。发送此数据包后,客户端和服务器进入建立状态,并完成三次握手。
HTTPS握手过程
HTTPS在HTTP中加入了SSL协议,SSL依靠证书来验证服务器的身份,加密浏览器和服务器之间的通信。如何加密、解密和验证,见下图,这叫握手。
附言:以下描述摘自:http://zhuqil.cnblogs.com
1.客户端发起HTTPS请求
2.服务器配置
使用HTTPS协议的服务器必须有一套数字证书,可以是自制的,也可以是CA证书。不同的是自己颁发的证书需要经过客户端验证后才能继续访问,而使用CA证书时不会弹出提示页面。这组证书实际上是一对公钥和私钥。公钥为别人加密,私钥为自己解密。
3.转移证书
这个证书其实是一个公钥,但是里面包含了很多信息,比如证书的颁发机构,过期时间等等。
4.客户端解析证书
这部分工作由客户的TLS完成。首先,它将验证公钥是否有效,如颁发机构、过期时间等。如果发现异常,会弹出警告框,表示证书有问题。如果证书没有问题,就会生成一个随机值,然后用证书对随机值进行加密。
5.传输加密信息
这部分传输由证书加密的随机值,这样服务器就可以得到这个随机值,客户端和服务器之间的通信也可以用这个随机值进行加密和解密。
6.服务段的解密信息
服务器用私钥解密后,得到客户端发送的随机值(私钥),然后用这个值对称加密内容。对称加密是指通过一定的算法将信息和私钥混合在一起,这样除非知道私钥,否则无法获取内容,客户端和服务器都知道私钥,所以只要加密算法足够强硬,私钥足够复杂,数据就会足够安全。
7.加密信息的传输
这部分信息由服务段的私钥加密,可以在客户端恢复。
8.客户端解密该信息
客户端使用之前生成的私钥解密来自服务段的信息,然后获得解密的内容。
在PS:的整个握手过程中,即使第三方监听了数据,也没有什么可做的。
摘要
为什么HTTPS是安全的?
HTTPS握手第四步,如果网站的证书不可信,会显示如下确认界面,确认网站的真实性。此外,在第六步和第八步中,使用客户端的私钥进行加密和解密,以确保数据传输的安全性。
HTTPS和HTTP的区别
1.https协议需要从ca申请证书或自制证书。
2.http信息以明文形式传输,而https通过ssl加密,具有安全性。
3.http直接用TCP传输数据,而https通过一层SSL(OSI表示层),使用不同的端口。前者是80(需要国内备案),后者是443。
4.http连接简单且无状态;HttpS协议是由SSL HTTP协议构建的网络协议,可以进行加密传输和认证,比HTTP协议更安全。
请注意,https加密位于传输层
当https消息被打包成tcp消息时,加密过程就完成了,https的头字段和正文字段都将被加密。
当使用tcp层工具(如tcpdump或wireshark)捕获数据包时,会获得加密的内容。如果用应用层抓包,用Charels(Mac),Fildder(Windows)抓包,那就是明文。
PS: HTTPS本身就是为了网络传输的安全。
例如,用wireshark抓取一个包:
Http,您可以看到捕获是明文:
Https,您可以看到捕获的是密文:
附录
HTTPS常用的加密和哈希算法如下:
非对称加密算法:RSA、DSA/DSS
对称加密算法:AES,RC4,3DES
哈希算法:MD5,SHA1,SHA256
版权声明:HTTP与HTTPS握手的那些事是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。