1.HTTP中的 S 是什么
HTTP 协议中的内容都是明文传输,HTTPS 的目的是将这些内容加密,确保信息传输安全。最后一个字母 S 指的是 SSL/TLS 协议,它位于 HTTP 协议与 TCP/IP 协议中间。
2.SSL/TLS协议的简单介绍
1)HTTP明文传输带来的问题
- 窃听风险
- 篡改风险
- 冒充风险
2)SSL/TLS协议的目的
- 所有信息都是加密传播,无法被窃听
- 具有校验机制,被篡改后,通信双方可以立刻发现
- 配备身份证书,防止被冒充
3.SSL/TLS协议的运行机制
基本思路:采用公钥加密法
问题及解决:
1)如何保证公钥不被篡改?
将公钥放在数字证书中。只要证书是可信的,公钥就是可信的。
2)公钥加密计算量太大,如何减少耗时?
每一次对话(session),客户端和服务器端都生成一个"对话密钥"(session key),用它来加密信息。由于"对话密钥"是对称加密,所以运算速度非常快,而服务器公钥只用于加密"对话密钥"本身,这样就减少了加密运算的消耗时间。
运行机制:一个完整的加密通信过程
1)客户端向服务端发送请求
2)服务端向客户端发送自己的数字证书,证书包含公钥
3)客户端校验证书是否正确。如果正确(并不代表对方就是服务器),发送一个随机数给服务端用私钥加密,自己用公钥去解密这个字符串,看是否能匹配上。如果匹配上,则说明对方确实是服务器
4)客户端生成一个对称加密算法,之后的内容会用这个对称加密进行加解密。客户端用公钥加密这个对称加密算法和密钥,发送给服务端。之后双方的通信就按这个方式展开了。
参考资料:
http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html