一. 基本概念
HTTP协议: 超文本协议, 被用于在Web浏览器和网站服务器之间传递信息, http协议以明文方式发送内容, 不提供任何方式的数据加密,如果攻击者截取了web浏览器和网站服务器之间的传输报文, 就可以直接读懂其中的信息, 因此http协议不适合传输一些敏感信息, 比如密码, 信用卡号, 支付信息等.
解决这个缺陷, 需要使用另一种协议: HTTPS安全套接字层超文本传输协议, 为了数据传输的安全, https在http的基础上加入了SSL协议, SSL依靠证书来验证服务器的身份, 并为浏览器和服务器之间的通信加密.
二. 区别
简单来说, https协议是由ssl + http协议构建的可进行加密传输, 身份认证的网络协议, 要比http协议安全.
主要区别:
- https协议需要到ca申请证书, 一般免费证书比较少, 所以需要花费一定的费用
- http是超文本传输协议, 信息是明文传输, https则是具有安全性的ssl加密传输协议
- http和https使用完全不同的连接方式, 用的端口也不一样, 前者是80, 后者是443
- http的连接很简单, 是无状态的, 而https协议是由ssl + http协议构建的可进行加密传输, 身份认证的网络协议, 比http协议安全
三. HTTPS工作原理
- 客户端发起https请求
就是用户在浏览器中输入一个https网址, 然后连接到server的443端口 - 服务端的配置
采用https协议的服务器必须要有一套数字证书, 可以自己制作, 也可以向组织申请, 区别就是自己颁发的证书需要客户端验证通过才可以继续访问, 而使用受信任的公司申请的证书则不会弹出提示页面(例如startssl有一年的免费服务)
这套证书就是一对公钥和私钥, 把公钥和私钥想象成一把钥匙和锁头, 全世界只有你一个人有这把钥匙, 你可以把锁头给别人, 别人可以用这个锁把重要的东西锁起来, 然后发给你, 因为只有你一个人有这把钥匙, 所以只有你才能看到被这把锁锁起来的东西. - 传送证书
这个证书其实就是公钥, 只是包含了很多的信息, 如证书的颁发机构, 过期时间等 - 客户端解析证书
这部分工作是由客户端的TLS(安全传输协议)完成的, 首先会验证公钥是否有效, 比如颁发机构, 过期时间等, 如果发现异常, 则会弹出一个警告框, 提示证书存在问题.
如果证书没有问题, 那么就生成一个随机值, 然后用证书对该随机值进行加密, 就好像上面说的, 把随机值用锁头锁起来, 这样除非有钥匙, 否则看不到被锁住的内容. - 传送加密信息
传送的是用证书加密后的随机值, 目的就是让服务端得到这个随机值, 以后客户端和服务端的通信就可以通过这个随机值来进行加密解密. - 服务端解密信息
服务端用私钥解密后, 得到了客户端传过来的随机值, 然后把内容通过该值进行对称加密, 就是将信息和私钥通过某种算法混合在一起, 这样除非知道私钥, 不然无法获取内容, 而正好客户端和服务端都知道这个私钥, 所以只要加密算法够强, 私钥够复杂, 数据就够安全. - 传输加密后的信息
这部分信息是服务端用私钥加密后的信息, 可以在客户端被还原. - 客户端解密信息
客户端用之前生成的私钥解密服务端传过来的信息, 于是获取了解密后的内容, 整个过程第三方即使监听到了数据, 也束手无策.
四. HTTPS的优缺点
-
优点: 安全性
(1) 使用https协议可认证用户和服务器, 确保数据发送到正确的客户机和服务器
(2) https协议是由SSL + HTTP 协议构建的可进行加密传输, 身份认证的网络协议, 要比http协议安全, 可防止数据在传输过程中不被窃取, 改变, 确保数据的完整性.
(3) https是现行构架下最安全的解决方案, 虽然不是最安全的, 但是增加了中间人攻击的成本 -
缺点
(1) SSL证书需要钱, 功能越强大的证书费用越高
(2) SSL证书通常需要绑定IP, 不能在同一IP上绑定多个域名, IPv4资源不可能支撑这个消耗
(3) https连接缓存不如http高效
(4) https连接服务器端资源占用高很多, 支持访客稍多的网站需要投入更大的成本
(5) https协议握手阶段比较费时, 对网站的相应速度有负面影响
来源:CSDN
作者:Sweetie77
链接:https://blog.csdn.net/weixin_43235210/article/details/104155245