1.HTTP缺点:
无连接: HTTP/1.1之前每次请求都要通过TCP建立连接断开连接,HTTP/1.1实现了持久连接
无状态: Cookie技术和持久连接解决
明文传输: 不安全
HTTPS:简单讲是HTTP的安全版,在HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
2.HTTPS特点:
内容加密:采用混合加密技术,中间者无法直接查看明文内容
验证身份:通过证书认证客户端访问的是自己的服务器
保护数据完整性:防止传输的内容被中间人冒充或者篡改
加密算法 --- RSA(混合加密机制)
(1)共享密匙加密: 公开密匙加密解密,但是无法保证安全发送密匙
(2)公开密匙加密: 公开密匙加密,私有密匙解密
HTTPS:混合加密机制: 结合对称加密和非对称加密技术
用对称加密生成的密钥对通信数据加密
用非对称加密生成的公钥对密钥加密
这样在保证密钥的安全性下,提高了效率
认证 --- 防止"中间人"攻击,并验证服务器身份
证书: 认证机构(CA)信息,公钥,域名,有效期,指纹(对证书进行hash运算,即证书摘要),指纹算法,数字签名(CA私钥加密的指纹)等
通信过程:
1.客户端发起 HTTPS 请求,服务端返回证书
2.客户端对证书进行验证,验证通过后本地生成用于改造对称加密算法的随机数。
3.通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密。
验证过程:
1. 证书是否过期
2.CA是否可靠(查询信任的本地根证书)
3.证书是否被篡改(用户使用CA根公钥解密签名得到原始指纹,再对证书使用指纹算法得到新指纹,两指纹若不一样,则被篡改)
4.服务器域名和证书上的域名是否匹配
助于理解,在知乎上down的HTTPS通信流程:
常见面试题 :
Q:HTTP与HTTPS区别?
A: 1.HTTPS需要申请购买CA证书, HTTP不需要
2.HTTP是明文传输,不安全, HTTPS是在HTTP基础上加了SSL层,更安全
3.HTTPS效率低,HTTP效率高
Q:HTTPS传输过程?
A:客户端发起 HTTPS 请求,服务端返回证书,客户端对证书验证,验证通过后本地生成用于改造对称加密算法的随机数,通过证书中的公钥对随机数进行加密传输到服务端,服务端接收后通过私钥解密得到随机数,之后的数据交互通过对称加密算法进行加解密。
Q:为什么需要证书?
A:防止中间人攻击,验证服务器身份
Q:怎么防止的篡改?
A:证书是公开的,虽然中间人可以拿到证书,但私钥无法获取,公钥无法推断出私钥,所以篡改后不能用私钥加密,强行加密客户也无法解密,强行修改内容,会导致证书内容与签名中的指纹不匹配