https证书模式详解

本文最后更新于:2021年7月24日 晚上

最近想起https相关的内容,有点遗忘了,网上一搜全是缺胳膊少腿的抄袭文章….

不过,在吐槽别人做的东西难用时,不妨想想自己能不能整理个更好的出来。

本文主要解释证书生成以及证书校验。关于服务端与客户端通信的部分有空再补充。

流程图

一、什么是证书

以我自己的网站为例,点开锁头,选中证书就能看到证书里的内容。

二、证书的生成

证书来源:合法的证书是由第三方的权威机构(CA)颁发的。我自己用的是let’s encrypt提供的。(因为他家的是免费的….卑微.jpg)。

生成原理:再次贴下流程图,看左边部分。CA根据你的网站信息,用Hash算法生成Hash值,再用CA的私钥生成数字签名(chrome把这个翻译成指纹,很形象)。这里可以看作为证书由基本信息+指纹组成,方便理解。

绘制图片好难啊,懒..

三、保证安全通信的原理

校验原理:其实也很简单。

第一步:根据证书里的基本信息来计算出Hash值1。比如我的证书基本信息里就注明了签名算法是sha256。

第二步:根据系统自带的各大权威机构的公钥,解密网站证书的指纹,得到Hash值2。(各大权威机构的证书在电脑生产出厂时就已经安装好了(已信任))

第三步:对比Hash值1Hash值2,相等则认证通过。

由于黑客没有CA的私钥,所以是无法伪造指纹的。

四、攻破

没想到吧,应该很少人会去想怎么攻破https这种安全模式。以目前的计算机计算能力来说,理论上https是不可破的。我们观察一下上面的流程图,不难发现其精髓在于引入CA这个第三方证人。

那么,思路可以有了

思路1:收买CA,得到私钥。

思路2:诱骗用户在电脑上安装黑客的证书(信任此证书),这样黑客就可以充当冒牌的CA,签发冒牌的证书。当用户访问正规网站时,如果被黑客劫持请求,并返回给你冒牌证书,那么接下来用户发出的请求都将被破译。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!