# 确保web安全的HTTPS
# HTTP的缺点
- 通信使用明文,内容可能被窃听。通过SSL对通信加密。
- 不验证通信方的身份,有可能遭遇伪装。利用证书验明身份。
- 无法验证报文完整性,可能被篡改。利用Content-MD5这样的报文摘要响应头可以做些基本的判断,但这些响应头本身也可以被篡改。
# HTTPS
HTTPS并不是一个新的应用层协议,只是在HTTP和TCP之间加了一层SSL。
# 对称秘钥加密
对称秘钥使用同一个秘钥进行加密和解密,只要拿到秘钥任何人都可以进行加密和解密
但是对称秘钥的安全传输本身就是个问题
# 不对称秘钥加密
不对称秘钥有公钥和私钥,公钥公开发布,任何人都能使用进行加密,私钥不公开,只有通过私钥才能解密公钥加密过的内容。
相较于对称秘钥,解决了对称秘钥的秘钥安全传输问题,代价是性能损耗效率较低
# 证书
证书是由可信赖第三方办法的,用于验明证书持有者真实身份的,同时证书中包含了公钥。
# HTTPS过程
- 客户端提供支持的SSL版本、支持的加密算法,以及一个客户端随机数(Client random)
- 服务器端提供才用的SSL版本、采用的加密算法,证书,以及服务端随机数(Server random)
- 客户端通过证书向可信赖第三方验明服务器身份,通过证书获取公钥,生成一个随机数(pre-master secret)利用公钥加密后传给服务器端
- 服务器端利用私钥解密,获取pre-master secret,客户端和服务器端根据client random、server random、pre-master secret生成对称秘钥
- 以后的通信通过对称秘钥进行加密解密