5G消息发展又进一程
案是不行,因为客户端除了通过验签的方式验证证书是否合法之外,还需要验证证书上的域名与自己的请求域名是否一致,中间人中途虽然可以替换自己向 CA 申请的合法证书,但此证书中的域名与 client 请求的域名不一致,client 会认定为不通过!
但是上面的证书调包给了我们一种思路,什么思路?大家想想, HTTPS 既然是加密的, charles 这些「中间人」为啥能抓到明文的包呢,其实就是用了证书调包这一手法,想想看,在用 charles 抓 HTTPS 的包之前我们先要做什么,当然是安装 charles 的证书 这样的话,由于只有 CA 的公钥才能解密签名,如果客户端收到一个假的证书,使用 CA 的公钥是无法解密的,如果客户端收到了真的证书,但证书上的内容被篡改了,摘要比对不成功的话,客户端也会认定此证书非法。
细心的你一定发现了问题,CA 公钥如何安全地传输到 client ?如果还是从 server 传输到 client,依然无法解决公钥被调包的风险,实际上此公钥是存在于 CA 证书上,而此证书(也称 Root CA 证书)被操作系统信任,内置在操作系统上的,无需传输,如果用的是 Mac 的同学,可以打开 keychain 查看一下,可以看到很多内置的被信任的证书。 (1)第一次投票,每台机器都会将票投给自己。 (2)接着每台机器都会将自己的投票发给其他机器,如果发现其他机器的zxid比自己大,那么就需要改投票重新投一次。比如server1 收到了三张票,发现server2的xzid为102,pk一下发现自己输了,后面果断改投票选server2为老大。 选举机制中涉及到的核心概念 敲黑板了,这些概念是面试必考的。 (1)Server id(或sid):服务器ID 比如有三台服务器,编号分别是1,2,3。编号越大在选择算法中的权重越大,比如初始化启动时就是根据服务器ID进行比较。 (2)Zxid:事务ID 服务器中存放的数据的事务ID,值越大说明数据越新,在选举算法中数据越新权重越大。 (3)Epoch:逻辑时钟 也叫投票的次数,同一轮投票过程中的逻辑时钟值是相同的,每投完一次票这个数据就会增加。 (4)Server状态:选举状态 LOOKING,竞选状态。 FOLLOWING,随从状态,同步leader状态,参与投票。 OBSERVING,观察状态,同步leader状态,不参与投票。 LEADING,领导者状态。 总结 (1)Zookeeper 选举会发生在服务器初始状态和运行状态下。 (2)初始状态下会根据服务器sid的编号对比,编号越大权值越大,投票过半数即可选出Leader。 (3)Leader 故障会触发新一轮选举,zxid 代表数据越新,权值也就越大。
(4)在运行期选举还可能会遇到脑裂的情况,大家可以自行学习。 (编辑:南通站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |