什么是HTTPS?
基于安全套接字层的超文本传输协议(HTTP over SSL),一个Netscape开发的Web协议。HTTPS在HTTP应用层的基础上使用安全套接字层(或者升级版传输层安全,Transport layer Security)作为子层。
为什么需要HTTPS?
HTTP(效率高)以明文方式发送内容,三大风险:1.窃听,2.篡改,3.冒充。
两者异同?
同:同一基础协议。
异:1.URL开头不同。2.HTTP标准80端口,工作与应用层;HTTPS标准443,工作在传输层。3.HTTP无加密和证书,HTTPS反之(免费证书少,需要一定费用)。
如何工作?
使用HTTPS连接时,服务器响应初始连接并提供它支持的加密方法。作为回应,客户端选择一个连接方法,两者交换证书验证身份。确保相同秘钥后传输加密信息,关闭连接。
SSL动作:1.验证服务器端,2.允许client和server选择加密算法和秘钥,确保双方支持。3.验证客户端。4.用公钥加密生成共享加密数据,5.创建加密的SSL连接。6.基于SSL连接传递HTTP请求。
如果用非对称加密,只能保证单项数据传输的安全性(公钥公开,可解私钥加密的数据)。
一、公钥如何获取
证书:网站的身份证(里面包含公钥),在用户访问时发给用户,让他们用里面的公钥加密数据。
CA:只有少数是权威公正的,比如VeriSign
所以企业也加入了对称秘钥提高安全性(也能节约时间,每一次session用session key加密运算非常快,降低公钥加密耗时)。那可能存在的问题就在证书上:1.证书伪造。2.证书篡改。
那么在了解证书格式时,数字签名和摘要(对传输内容hash——>摘要,再通过CA私钥加密——>数字签名)是有利的防伪武器。
着重关注证书4点内容:1.机构名字CA,2.数字签名,3.证书持有者公钥,4.签名用到hash算法。
完全伪造证书:1.浏览器内嵌CA根证书,不认识直接认为危险证书。2.根据存在的CA名找到内置根证书和公钥对伪造的摘要解密,失败被认为危险证书。
篡改证书:一般是代理拿到证书后用公钥修改成自己的。1.根据证书的CA找到CA根证书和公钥对数字签名解密得到证书摘要。2.根据使用hash计算证书摘要。3.对比不一致则是危险证书。