深入理解https

来源:互联网 发布:linux arp 安装包 编辑:程序博客网 时间:2024/06/06 01:43

首先,我们来说一下http协议的缺点。
主要有一下三条:
1、通信使用明文,内容可能会被窃听。
2、通信方身份无法确认。
3、收到的报文可能已经被修改。
所以我们来采用HTTPS来解决以上问题。

  • HTTPS

HTTP+加密+认证+完整性保护=HTTPS
TCP/IP协议族分为四层:应用层,传输层,网络层,链路层。
首先我们要知道,http是应用层的协议,而https并非应用层的新协议。而是HTTP的通信接口部分用SSL和TLS协议代替。也就是说SSL协议是夹在应用层和传输层之间的协议。
接下来讲一下SSL协议的机制

  1. 加密
    我们先来了解一下加密方式:①公开密钥加密,也叫非对称加密,采用公开的密钥进行加密,然后用私有密钥进行解密。②共享密钥加密,也叫对称加密,加密和解密都采用一把密钥。
    https采用了混合加密的机制。
    ①首先客户端会生成一个被称为Pre-master secret的随机密码串,将该密码串用公钥加密后发送给服务端,并提示服务器之后的报文都会用该密码串生成的共享密钥进行加密。
    ②然后服务器端会用私钥来解密回来的报文,获得该随机密码串。
    ③之后的服务器和客户端的通信都采用该密码串生成的共享密钥来加密报文,也就是对称加密。

  2. 认证
    那么如何确认客户端收到的公开密钥是服务器指派的那个密钥呢。
    ①服务器会把自己的公开密钥登录至数字证书认证机构。
    ②数字证书认证机构用自己的私有密钥想服务器的公开密码部署数字签名,并颁布公钥证书。
    ③客户端拿到服务器的公开证书后(包括公开密钥和数字签名),向数字证书机构认证,确认数字签名的正确来确定公开密钥的真实性。
    接着就回到了上面加密的步骤。

  3. 完整性
    在以上流程中,应用层发送数据会附带一种叫MAC的报文摘要,MAC能查知报文是否被篡改,来确认报文的完整性。

总结

 ①服务器会把自己的公开密钥登录至数字证书认证机构。 ②数字证书认证机构用自己的私有密钥想服务器的公开密码部署数字签名,并颁布公钥证书。 ③客户端拿到服务器的公开证书后(包括公开密钥和数字签名),向数字证书机构认证,确认数字签名的正确来确定公开密钥的真实性。 ④首先客户端会生成一个被称为Pre-master secret的随机密码串,将该密码串用公钥加密后发送给服务端,并提示服务器之后的报文都会用该密码串生成的共享密钥进行加密。 ⑤然后服务器端会用私钥来解密回来的报文,获得该随机密码串。 ⑥之后的服务器和客户端的通信都采用该密码串生成的共享密钥来加密报文。 
原创粉丝点击