https加密方式
https采用对称加密与非对称加密的混合加密方式
混合加密方式原理:
1. 服务端将非对称加密的公钥发送给客户端;
2. 客户端拿着服务端发来的公钥,对对称加密的key做加密并发给服务端;
3. 服务端拿着自己的私钥对发来的密文解密,从来获取到对称加密的key;
4. 二者利用对称加密的key对需要传输的消息做加解密传输。
数字认证原理
上述混合的加密方式还是存在安全问题,那就是无法证明公开**本身就是货真架势的公开**。比如,正准备和某台服务器建立混合加密的通信时,如何确保发来的公开秘钥就是那个服务器发来的?很有可能就是不法分子发来的。
为了解决上述的问题,可以使用数字认证机构颁发的公开**证书。
首先,服务器这边生成一对公私钥,公司人员拿着公开**去数字认证机构提出申请。数字认证机构在调查判断公司合法身份后,对这个公开**做数字签名,并将这个公开**绑定在公钥证书中,将这个公钥证书发给服务器。
客户端找服务端通信时,服务器会先将这个公钥证书发送给客户端,接到公钥证书的客户端使用数字证书认证机构的公开**,对这个证书进行验证,一旦验证通过,客户端可明确两件事:一、认证服务器的公开**证书是真实有效的数字证书机构认证的。二、服务器的公开**是值得信赖的。
需要说的一点,此处认证机构的公开**必须安全地转交给客户端。使用通信方式时,如何安全转交是一件很困难的事,因此,多数浏览器开发商发布版本时,会事先在内部植入常用认证机构的公开**。
https通信流程
步骤 1: 客户端通过发送 Client Hello 报文开始 SSL 通信。报文中包含客户端支持的 SSL 的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法及**长度等)。
步骤 2: 服务器可进行 SSL 通信时,会以 Server Hello 报文作为应答。和客户端一样,在报文中包含 SSL 版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。
步骤 3: 之后服务器发送 Certificate 报文。报文中包含公开**证书。
步骤 4: 最后服务器发送 Server Hello Done 报文通知客户端,最初阶段的SSL握手协商部分结束。
步骤 5: SSL 第一次握手结束之后,客户端以 Client Key Exchange 报文作为回应。报文中包含通信加密中使用的一种被称为 Pre-master secret 的随机密码串。该报文已用步骤 3 中的公开**进行加密。
步骤 6: 接着客户端继续发送 Change Cipher Spec 报文。该报文会提示服务器,在此报文之后的通信会采用 Pre-master secret **加密。
步骤 7: 客户端发送 Finished 报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。
步骤 8: 服务器同样发送 Change Cipher Spec 报文。
步骤 9: 服务器同样发送 Finished 报文。
步骤 10: 服务器和客户端的 Finished 报文交换完毕之后,SSL 连接就算建立完成。当然,通信会受到 SSL 的保护。从此处开始进行应用层协议的通信,即发送 HTTP请求。
步骤 11: 应用层协议通信,即发送 HTTP 响应。
步骤 12: 最后由客户端断开连接。断开连接时,发送 close_notify 报文。上图做了一些省略,这步之后再发送 TCP FIN 报文来关闭与 TCP 的通信。在以上流程中,应用层发送数据时会附加一种叫做 MAC(Message AuthenticationCode)的报文摘要。MAC 能够查知报文是否遭到篡改,从而保护报文的完整性。
参考文档:http://blog.csdn.net/ituling/article/details/52541585