前言
HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer),其实 HTTPS 并不是一个新鲜协议,我在读大学的时候就在书上看到了,那个时候就又部分公司用上了,而Google 很早就开始启用了,初衷是为了保证数据安全。 近两年,Google、Baidu、Facebook 等这样的互联网巨头,不谋而合地开始大力推行 HTTPS, 国内外的大型互联网公司很多也都已经启用了全站 HTTPS,这也是未来互联网发展的趋势。
既然写HTTPS的理解,那么也要谈一下和HTTP的对比了
- HTTP协议就是超文本传输协议,是客户端浏览器和服务器之间的通信协议,举个栗子,就是一种互相都能理解的语言。好比两个中国人江湖,都用汉语一样。
- HTTPS协议只比HTTP多一一个S那么这个S应该就是security安全的意思了,举个栗子就是,对两者的交流语言进行了加密,不让外人知道。
那么之间用什么加密呢,当然是加密算法了,加密算法不做深入交流,感兴趣的可以自己搜索
- 对称加密【用相同的算法加密和对应的算法解密,然和人只要算法是什么都可以解密】
- 非对称加密【通过公私钥去加密和解密,如果用私钥加密,那么只能用这个私钥对应的公钥解密】
- 哈希算法【转换其长度比加密的信息小的多MD5、SHA-1...】
- 数字签名【给信息做个签名,证明信息的有效性,信息如果改变,那么签名就失效】
1.HTTP解释
HTTP请求过程中,客户端与服务器之间没有任何身份确认的过程,数据全部明文传输,“裸奔”在互联网上,所以很容易遭到黑客的攻击,如下:
大家也可以打开你的谷歌浏览器在开发模式中查看
由此证明http的信息传递是明文的,那么就是不安全的
因为是明文的那么很容易被劫持,被不法分子知道的信息
2.HTTPS解释
https的上面也说了,就是多了一层加密,那么究竟如何加密呢,无非是用算法,对称加密效率最高,但是一旦被知道算法,那么就不再安全,其次是客户端和服务端都要维持相同的密钥,维护困难;那么非对称加密呢?私钥是服务器的,那么公钥就是公开的,同样也会被知道,其次是公钥私钥每次加解密的效率是明显低于对称加密算法的,有矛就有盾。因此现在大多数都采用了一个这种的办法,既提高效率也维护安全。不是说非对称加密算法的效率低于对称加密么,那么在服务器第一次连接客户顿的时候用非对称加密验证,验证通过后,后面的信息交流就通过对称加密解密进行后面的操作。反正小编所在的公司就是这样,小编我就是专门做支付的,对这方面,稍微了解了一点。
上面的办法固然好,但是当客户端请求服务器的时候,这一步也很可能被黑客劫持,黑客知道了银行的私钥和公钥就可以冒充银行,给你一个交流了,那么久又产生了一个问题,就是:信任问题
什么是信任问题
就比如用淘宝购物,买卖双方在支付的时候,都是把钱支付给支付宝,有支付宝做担保,如何卖家出现是么有害消费者的行为,那么买家在有理的情况下就可以申请退款不把钱给卖家。
那么在网络中也是这样,那么这就是SSL证书,当客户端连接服务器的时候,服务器会向客户端发送一个SSL证书,证书里包含了:
- (1)证书的发布机构CA
- (2)证书的有效期
- (3)公钥
- (4)证书所有者
- (5)签名
客户端在接受到服务器的SSL证书后,会对证书进行校验,浏览器会查找当前操作系统的内置受信任的证书发布机构CA,与服务器发来的证书中颁发者的CA对比,当如果没有找到的时候就会提醒用户是否信任当前证书,小编就无数次的遇到(一般在和银行合作申请商户的时候都会又这步),这就是小编眼里的HTTPS,当然HTTPS不止这些,里面包含了复杂的算法、协议和机制,这里只是小编所了解的一家之言,仅供参考。