HTTP如何演化成HTTPS的?

1 篇文章 0 订阅
0 篇文章 0 订阅

1.HTTP是什么?

      这是个老生常谈的问题,但很多人都未必能回答的很好,所以还是简单说一下我的理解。

首先,先说一下网络模型,如图所示,有说七层模型,有说五层模型,也有说四层模型的,实际上指的都是一个东西。

       顺带一提,Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。Socket把复杂的TCP/IP协议族隐藏在Sock接口后面,对用户来说只需要调Socket协议提供的接口就可以了,我们所说的socket编程指的是利用soket接口来实现自己的业务和协议。

好了,开始进入正题。

HTTP协议全称Hyper Text Transfer Protocol,中文意思就是超文本传输协议,位于T网络模型当中的应用层。

HTTP协议是基于TCP/IP的通过请求/响应的方式,在客户端和服务端之间进行通信。

2.HTTP协议的致命缺陷—不安全

       HTTP协议是使用明文传输,就相当于直接在网络上“裸奔”,传输的信息没有任何隐私可言。黑客很容易就截取到你发送的信息,并能对截取的信息进行篡改。

对于这种不安全的协议,早期的解决方法有:

(1).使用对称加密:

     客户端与服务器通信时,约定使用一组对称加密一个随机生成的秘钥,双方就可以使用这一秘钥进行加密解密进行数据传输。但这也有一个问题,如果黑客从一开始就截获到了双方通信中的加密方式和秘钥的话,这种传输方式就与明文传输没有差别了。

(2).使用非对称加密:

   服务端有一组公钥和私钥,当客户端向服务器申请通信时,第一步服务器便公钥发给客户端。客户端先随机生成一个秘钥,然后用服务端的公钥进行加密,加密后的数据发送给服务端。服务端用自己的私钥解密,便得到了客户端发来的秘钥。此后,客户端和服务端就使用这一秘钥进行加密解密数据进行通信。

       这种方式看是很安全,但还是有很大的缺陷。如果黑客在客户端和服务器第一次进行通信(即服务器将自己的公钥发给客户端)的时候就进行拦截,获取到了服务器的公钥(以下代称“公钥B”)。此时,黑客将自己提前生成好的公钥(以下代称“公钥A”)和私钥A(以下代称“私钥A”)中的公钥A发送给客户端。客户端收到公钥A,便对秘钥进行加密,并返回给服务器。黑客截获后,用自己的私钥A进行解密,便得到了客户端发来的秘钥,然后用之前截获的服务器的公钥B加密客户端的秘钥,并发送给服务器。如此一来,便神不知鬼不觉的获取到了客户端和服务器通信的秘钥了。

3.HTTPS登场

    引入第三方权威的证书颁发机构(CA)。

证书包含的数据有很多,这里只说几个比较重要的:1.证书颁发机构信息、2.服务器网址、3.机构私钥加密的服务器公钥、4、证书私钥加密的证书签名。如图:

                                                          

证书使用流程如下:

(1).服务器运营组织先将自己的机构信息、服务端网址及自己的公钥等发给证书颁发机构进行审核,审核通过后便会给该机构颁发一个证书。

(2).当客户端与服务器申请通信时,服务器先将自己的证书发给客户端。客户端从证书中可以直接获取到证书颁发机构信息,各大浏览器和操作系统都有维护所以证书颁发权威机构的信息和公钥。所以,客户端可以根据证书里明文的证书颁发机构的信息在本地找到该机构的公钥,进行证书解密。获取到证书签名。

        接下来,客户端按照该证书颁发机构的签名规则,自己也生成一个证书签名,如果两个签名一致,说明证书是有效的。此时客户端就可以再次用证书颁发机构的公钥解密出服务器的公钥。之后,客户端再生成一个对称加密的秘钥,用服务器的公钥加密后发给服务器,双方便开始使用这一秘钥进行通信。

       这中间,最主要的就是客户端对证书签名的校验,因为该证书签名中包含了服务器的网址等信息,并经由证书颁发机构的私钥进行了加密,如果黑客想篡改这一签名,比方说黑客截获了这一证书,并使用自己的私钥加密被篡改的证书签名,然后将篡改后的证书发给客户端。客户端在使用证书颁发机构的公钥解密证书签名时,无法解析,证书签名认证失败。

      

HTTPS的主要思想差不多就是这样。

HTTPS其实就是在HTTP协议的基础上增加了SSL安全层,刚才一系列的认证操作就是在SSL层中完成的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值