HTTP的缺点
通信使用明文,可能会被窃听
所谓互联网,是由能连通到全世界的网络组成的.无论世界哪个角落的服务器在和客户端通信时,
在此通信线路上的某些网络设备,光缆,计算机等都不可能是个人的私有物,不排除某个环节遭到恶意
窥视行为.
不验证通信方的身份就可能遭遇伪装
HTTP协议中的请求和响应不会对通信方进行确认.
无法证明报文的完整性,可能已遭到篡改
所谓完整性是指信息的准确度,意味着http无法判断信息是否准确
比如,从某个Web网站上下载内容,是无法确定客户端下载的文件和服务器上存放的文件是否前后一致.及时内容真的已经改变,作为接收的客户端也是察觉不到的
HTTPS
为了统一解决上述http这些问题,需要在http上加入加密和认证等机制,这样的处理方式称为https

比如在Web页面中输入信用卡号,采用http的话,如果这条线路遭到窃听,那么信用卡卡号就暴露了.
https并非是应用层的新协议.只是http通讯接口部分使用SSL和TLS协议替换而已.

SSL是独立于HTTP的协议,所以不光是HTTP协议,其运行在应用层的SMTP(POP3)和telnet等协议均可配合SSL协议使用.可以说SSL是当今世界上应用最为广泛的网络安全技术.
加密方法介绍
- 共享密钥加密

- 公开密钥加密

RSA算法介绍
RSA公钥加密算法的介绍(qq邮箱登录就是用了RSA算法加密)
qq邮箱加密引用RSA加密技术:
参数依次代表密码,根据qq账号生成的salt值,验证码/伪验证码,是否将密码用md5加密(false)
加密后的结果:
RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。 RSA 的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。人们已能分解多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。
HTTPS采用混合加密机制(共享加密和公开密钥加密)

证明公开密钥正确性的证书
数字证书认证机构颁发的公开密钥证书的使用
证书使用的实际应用(Charles 抓包工具)
使用Charles访问百度(https)无法访问这样的情况呢?原因是Charles相当于一个中间人代理,用户的浏览器如果直接访问目标服务器,验证CA证书有效,所以不会出这种提示,但是在中间加入Charles代理后,实际上用户浏览器就会验证Charles提供的证书,这里显然是验证不过的,所以就会出现这种提示。我们必须手动在客户端导入Charles的证书,才能不出现这个信任提示.
整个https流程的图解

SSL和TLS

HTTPS和OpenSSL的关系
telnet和openssl命令行的区别:
参考资料

