背景:
HTTP协议由于是明文传送,所以存在三大风险:
1、被窃听的风险:
第三方可以截获并查看你的内容
2、被篡改的危险:
第三方可以截获并修改你的内容
3、被冒充的风险:
第三方可以伪装成通信方与你通信
HTTP因为存在以上三大安全风险,所以才有了HTTPS的出现。HTTPS涉及到了很多概念,比如SSL/TLS,数字证书、数字签名、加密、认证、公钥和私钥等。
对称加密
采用单钥密码系统的加密算法,同一个秘钥可以同时用作信息的加密和解密,这种加密方法就成为对称加密,也称为单秘钥加密。对称加密的秘钥只有一个,加密解密为同一密码,且解密速度快,典型的对称加密算法有DES/ASE等
非对称加密
秘钥成对出现(根据公钥无法推知私钥,根据私钥无法推知公钥),加密解密使用不同的秘钥(公钥加密需要私钥解密,私钥解密需要公钥解密)。相对对称加密速度较慢,典型的非对称加密算法有RSA/DSA等
数字证书
将公钥和个人信息用一个Hash算法生成一个信息摘要,Hash算法有一个极好的特性,只要输入数据有一点变化,那生成的信息摘要就会巨变,这样就可以防止别人修改原始内容。随后让有公信力的认证中心(简称CA)用它的私钥对信息摘要进行加密,形成签名:把原始信息和数据签名合并,形成一个全新的东西,叫作“数字证书”
传输过程:
客户端发起HTTPS请求
服务器初步响应
采用HTTPS协议的服务器必须要有一套数字证书,也就是一对公钥和私钥。证书发回客户端,证书包含证书的颁发机构,过期时间等客户端解析证书
客户端先检验证书是否有效,比如颁发证书的机构是否合法,证书中包含的网站地址是否与正在访问的地址一致,过期时间等,如果发现异常,则提示证书存在问题,如果证书没有问题,那么客户端就生成一个随机值,然后用证书对该随机值进行加密客户端发送加密信息
服务器解密信息
服务器用私钥解密后,得到了客户端传过来的公钥,然后内容通过该值进行对称加密服务器发送加密后的公钥
客户端解密信息