HTTPS疑惑点

针对老刘公众号文章做出说明与补充。

  1. 关于之前对 在数字证书上进行签名后就没法修改的疑惑:
    描述:
    a. 为了解决服务端公钥替换的问题。此时首先在CA(认证中心),将原信息(服务器的公钥与服务器的身份信息),使用不可逆算法生成摘要,然后把 原信息与摘要以及CA信息(CA的机构,使用的不可逆算法)生成数字证书发送给浏览器。浏览器收到后使用CA信息中的不可逆算法也对原信息进行处理,将处理的结果与摘要进行比较。此时中间人是没法替换替换原信息中的公钥的,因为替换后,最后浏览处理的结果与摘要会不同。 但是中间人可以在改完公钥后,重新生成摘要,替换掉原有摘要。所以问题任然没有解决。

b. 在介绍上述问题的解决方案前,先声明两点。一是:中间人也可以把自己的原信息在CA处生成证书。但不可以用 别的服务器身份信息加上自己公钥来生成证书。这点是CA机构必须要保证的,否则CA存在没有意义。二是:浏览器端在收到证书后,肯定是要检查服务器身份信息的。

c. 根据a存在的问题,以及b的前提说明。 现在在a的基础上,使用CA的私钥将将摘要加密生成数字签名。然后将原信息与数字签名生成数字证书,发送给浏览器。浏览器收到后,先看服务器信息是不是自己请求的服务器(注释1),然后使用CA的不可逆算法对原信息进行处理,得到result1,再使用CA的公钥来解密数字签名,得到摘要。此时若result1与摘要相同,则证明原信息未被修改,此时就可以取出服务器公钥。

注释1 :
这一步很多文章中都没直接说明。如果不看服务器身份信息,那么中间人直接把自己的服务器身份信息与公钥在CA处以正规流程生成数字证书,然后替换掉原有的证书,这样浏览器进行验证时,比对的信息也是未修改的。

补充:

  1. c中提到的CA的公钥哪来的? CA的公钥是本身就放在操作系统/浏览器的,操作系统/浏览器会把信任的CA信息内置在客户端。
  2. 服务端是如何跟CA交互拿到证书的? 这里其实并不是去发送请求到CA去获取。而是运维任务,提前去申请CA机制(可以看做一个可以制作证书的工具),申请成功后放在了服务端。
  3. 另外参考H大文章中的具体关于HTTPS中SSL的介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值