Https要点
- 加密方式
HTTPS 在内容传输的加密上使用的是对称加密,
非对称加密只作用在证书验证阶段
- 验证流程
1、浏览器发起请求
2、服务端接收并返回证书
3、浏览判断证书,不合法警告提示
4、合法生成随机数,浏览器通过公钥加密随机数
5、服务端通过私钥对随机数进行解密
6、服务端通过客户端传入的随机数构造对称加密算法,
对返回结果内容进行加密后传输
- CA证书作用
防止”中间人“攻击,同时可以为网站提供身份证明
HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,
是可以构建“中间人”网络,代理软件可以对传输内容进行解密
加密方式
对称加密算法
加密秘钥与解密秘钥相同
非对称加密
特点是私钥加密后的密文,只要是公钥,都可以解密,但是公钥加密后的密文,只有私钥可以解密。私钥只有一个人有,而公钥可以发给所有的人。
总结
- 连接时客户端采用不同的对称加密算法:
使用随机数来生成对称加密算法。这样就可以做到服务器和客户端每次交互都是新的加密算法、只有在交互的那一该才确定加密算法。
- 首次协商时,采用非对称加密算法
如何将公钥发送给每一个客户端?
问题1:
公钥被调包的问题出现,是因为我们的客户端无法分辨返回公钥的人到底是中间人,还是真的服务器。这其实就是密码学中提的身份验证问题。
解决:
是第三方机构使用它的私钥对我们的公钥进行加密后,再传给客户端。客户端再使用第三方机构的公钥进行解密
问题二:
第三方机构不可能只给你一家公司制作证书,它也可能会给中间人这样有坏心思的公司发放证书。这样的,中间人就有机会对你的证书进行调包,客户端在这种情况下是无法分辨出是接收的是你的证书,还是中间人的。因为不论中间人,还是你的证书,都能使用第三方机构的公钥进行解密。像下面这样:
解决:数字签名,解决同一机构颁发的不同证书被篡改问题
证书编号!我们怎么鉴别这张证书是的真伪呢?只要拿着这个证书编号上相关机构去查,如果证书上的持证人与现实的这个候选人一致,同时证书编号也能对应上,那么就说明这个证书是真实的。
- 客户端本地怎么验证证书
客户端拿到证书后根据证书上的方法自己生成一个证书编号,如果生成的证书编号与证书上的证书编号相同,那么说明这个证书是真实的。