HTTPS比HTTP厉害到哪儿了?
HTTPS 是身披 SSL 外壳的 HTTP
通常HTTP直接和TCP通信。当使用SSL时,演变成先和SSL通信,再由SSL和TCP通信。简言之,所谓的HTTPS,其实就是身披SSL协议这层外壳的HTTP。
在采用SSL后,HTTP就拥有了HTTPS的加密、整数和完整性保护这些功能。
HTTPS如何实现安全机制的
须知:
- 对称加密
- 非对称加密
- CA证书机构
对称加密
即A、B双方拥有同一把类型的密钥,一方用这个钥匙加密,另一方可以用这个解密。
非对称加密
有公钥、私钥两把密钥。假设A持有公钥,B持有私钥,A用公钥加密,B用私钥解密
CA证书机构
安全实现
事先声明,CA机构拥有两把密钥ca(公钥)、cb(私钥),同时服务器也有两把密钥sa(公钥)、sb(私钥),而客户端本地/浏览器存储着各大正规证书机构的公钥ca。
首先,服务器把自己的公钥交给数字证书认证机构,CA机构把这个sa和这个网站的一些信息用cb加密生成公钥证书,然后给到服务器。
公钥证书就是介玩意儿。
SSL握手建立过程如下
-
客户端首次发送Client Hello报文开始SSL通信,报文包括支持的SSL的指定版本、加密组件列表(所使用的加密算法及密钥长度等)。就是跟服务器透个底,我就能看懂这些东西,别瞎跟我讲别的
-
服务器可进行SSL通信时,以Server Hello报文作为应答。报文也包含SSL版本及加密组件。你只支持这些,那我就从里面筛选一点吧
-
紧接着服务器继续发送Certificate报文,其中包含着公开密钥证书!
-
最后服务器发送Server Hello Done报文告诉客户端,SSL握手协商部分结束。
-
客户端收到以后,用本地的ca解密证书,如果能得到有用的身份信息(访问的网站对应的一系列信息),就说明证书是可以信任的。再发一个Client Key Exchange报文给服务器,报文中有一个随机生成密码串(Pre-master secret)。这个报文用上一步解出来的sa加密。
-
客户端接着发送一个报文告诉服务器,以后我们就用这个Pre-master secret密钥加密。
-
客户端继续发送Finished报文。这个报文里面包含连接至今全部报文的整体校验值。这次握手协商能否成功取悦于服务器是否能够正确解密该报文。
-
服务器同样返回一个客户端步骤6发送的报文。行听你的,我们就用这个加密解密。
-
服务器接着发一个Finished报文。
-
服务器客户端的Finished报文交换完毕后,SSL连接建立完成。从此处开始进行应用层协议的通信,即发送HTTP请求。
-
服务器回复HTTP相应。
上面文字对照图片阅读完后,接下来是整个流程的图解。
收工!!!
参考文献
图解HTTP . 上野宣