ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
>[danger]什么是https协议? **** ![](https://box.kancloud.cn/5fd3fb079390683d909300654ae24a17_636x256.png) 1. 其实就是在HTTP上加入一层SSL/TSL加密, 利用SSL/TSL加密建立一条加密的通信渠道进行数据传输 2. HTTP + 加密 + 认证 + 完整性保护 = HTTPS 3. HTTP先和SSL/TSL通信, 再与TCP通信 4. 那么加密SSL是如何做的呢, 我们需要先了解共享加密(对称加密)和非对称加密 >[danger]共享秘钥? (对称加密) 1. 加密和解密都使用同一秘钥 2. 但是很危险如何让攻击者拿到秘钥就可以解密我们传输的数据了 ![](https://box.kancloud.cn/5766331e031fdaadb10e6a646f2a5f38_350x309.png) >[danger]公钥,私钥加密? (非对称加密) 1. 可以使用公钥加密信息, 再用私钥解密 2. 也可以用私钥加密信息, 再用公钥解密 **** ![](https://box.kancloud.cn/601ae551ad474fedf3200307db17ccb8_680x493.png) (1) 客户端 <- (获取公钥) <- 服务端 (2) 客户端 -> (利用公钥, 加密信息, 发给服务器端) -> 服务端 (3) 客户端 -> (服务端利用私钥解密, 得到信息) -> 服务端 (这里注意, 私钥是保存在服务器上, 除非你能黑入我的服务器, 获取私钥) **** >[danger]HTTPS的混合加密方式 **** 1.需要申请一对证书, 证书就是公钥和私钥 (1) 因为公钥加密, 私钥解密, 或者私钥加密, 公钥解密, 这种方式比较慢, (2) 最好使用一个共享秘钥, 即可加密也可以解密, 但是直接传输这个共享秘钥很危险.所以混合使用上2种方式 ![](https://box.kancloud.cn/bd1774e2a3717447d4514d02e3520503_650x442.png) 2. 流程如下: (1): 客户端向服务端请求索要公钥, 并验证公钥 (2): 随机产生一个共享秘钥, 公钥加密它发给服务器端, 服务端用私钥解密, 得到共享秘钥 (3): 以后这对前后端就用这个共享秘钥加密和解密信息 3. 注意: 客户端和服务端都要配置身份证书, 防止中间人得到公钥伪装客户端 ***** ![](https://box.kancloud.cn/f4610bbfcba60ec3c251d5f69dca5617_853x514.png) 中间人, 无法拥有服务器上的CA私钥, 所以证书无法再次加密骗过服务器的验证 **** 扩展: 安全性考虑: (1): HTTPS协议的加密范围也比较有限,在黑客攻击、拒绝服务攻击、服务器劫持等方面几乎起不到什么作用 (2): SSL证书的信用链体系并不安全,特别是在某些国家可以控制CA根证书的情况下,中间人攻击一样可行 成本考虑: (1): SSL证书需要购买申请,功能越强大的证书费用越高 (2): SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名. (3): 使用HTTPS协议会使页面的加载时间延长近50%,增加10%到20%的耗电。 (4): HTTPS连接缓存不如HTTP高效,流量成本高。 (5): HTTPS连接服务器端资源占用高很多,支持访客多的网站需要投入更大的成本, 握手阶段比较费时, 影响用户体验, 最好像12306普通页面用HTTP, 用户操作页面使用HTTPS ****