https证书模式详解
本文最后更新于:2021年8月5日 晚上
最近想起https相关的内容,有点遗忘了,网上一搜全是缺胳膊少腿的抄袭文章….
不过,在吐槽别人做的东西难用时,不妨想想自己能不能整理个更好的出来。
本文主要解释证书生成以及证书校验。关于服务端与客户端通信的部分有空再补充。
流程图
一、什么是证书
以我自己的网站为例,点开锁头,选中证书就能看到证书里的内容。
二、证书的生成
证书来源:合法的证书是由第三方的权威机构(CA)颁发的。我自己用的是let’s encrypt提供的。(因为他家的是免费的….卑微.jpg)。
生成原理:再次贴下流程图,看左边部分。CA根据你的网站信息,用Hash算法生成Hash值,再用CA的私钥生成数字签名(chrome把这个翻译成指纹,很形象)。这里可以看作为证书由基本信息
+指纹
组成,方便理解。
三、保证安全通信的原理
校验原理:其实也很简单。
第一步:根据证书里的基本信息来计算出Hash值1
。比如我的证书基本信息里就注明了签名算法是sha256。
第二步:根据系统自带的各大权威机构的公钥,解密网站证书的指纹,得到Hash值2
。(各大权威机构的证书在电脑生产出厂时就已经安装好了(已信任))
第三步:对比Hash值1
和Hash值2
,相等则认证通过。
由于黑客没有CA的私钥,所以是无法伪造指纹的。
四、攻破
没想到吧,应该很少人会去想怎么攻破https这种安全模式。以目前的计算机计算能力来说,理论上https是不可破的。我们观察一下上面的流程图,不难发现其精髓在于引入CA这个第三方证人。
那么,思路可以有了
思路1:收买CA,得到私钥。
思路2:诱骗用户在电脑上安装黑客的证书(信任此证书),这样黑客就可以充当冒牌的CA,签发冒牌的证书。当用户访问正规网站时,如果被黑客劫持请求,并返回给你冒牌证书,那么接下来用户发出的请求都将被破译。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!