加解密与HTTPS(5)

时间:2023-01-06 11:04:17

您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~




咱们大学读完之后有毕业证书,并且这个证书可以在学信网查询。专业上有注会、CCIE、律师证等,可以在国家职业认证机构或委托机构的网站上查到。公司注册之后,营业执照信息也可以在天眼查或企查查上找到。从上述场景中,不难发现证书的作用:

1、过往经历的证明;

2、第三方信用担保;

3、唯一合法性检验。


在互联网上也有证书,并且还是天文数字,随便举几个例子看看就知道:

加解密与HTTPS(5)


加解密与HTTPS(5)


加解密与HTTPS(5)



这就是互联网站的「毕业证」。

而且还不是谁都能发这样的证书。现在世界著名证书颁发机构(也叫CA证书授权中心,Certificate Authority)包括:DigiCert(某付宝的毕业证就是它发的)、Comodo、GeoTrust(阿里云的毕业证是它发的)、Symantec、RapidSSL。

有了「毕业证」,就不得不提「学位证」:

1、DV:域名型证书,只需要验证域名的所有权,相当于学士学位;

2、OV:组织型证书,域名和组织身份都要验证,相当于硕士学位;

3、EV:安全性和可信任度最高,特点是浏览器有绿色地址栏,相当于博士学位。

加解密与HTTPS(5)


有了「学位证」,还要能够选修不同「专业」:通配符型、万能型、单域名型、多域名型。

真实世界的证书,一般都是学校存档一份,毕业生保存一份。有一些比价特殊的工艺,保证证书不可伪造及唯一性。那么网络证书CA怎么保证安全性、不可伪造及唯一呢?

可以随便找一个有证书的网站,看看TA的证书「长什么样」。

目前,所有证书都由四部分组成:

1、主题信息:常规信息,如国家、地区、组织等;

2、签发者信息:证书机构、签发者使用的签名算法;

3、公钥信息:包括密钥基本信息和扩展信息(策略、约束、扩展域名、时间戳列表等);

4、指纹信息:SHA-1、SHA-256。


那么证书是怎么签发的呢?

1、准备证书元数据:包括签发人、地址、签发时间、有效期等,还包括证书持有者基本信息,比如DN(DNS Name)、 所有者公钥等信息;

2、使用的Hash算法(如SHA-256)对证书元数据进行计算,生成数字摘要;

3、使用签发人的私钥对该数字摘要进行加密,生成一个加密的数字摘要,也就是签发人的数字签名;

4、将数字签名附加到数字证书上,变成一个签过名的数字证书;

5、将签过名的数字证书与签发人的公钥一同发给证书使用者。

就是这样的:

加解密与HTTPS(5)


怎么验证证书的真伪呢?

1、证书使用者获通过某种途径(如浏览器访问)获取到该数字证书,解压后分别获得证书元数据和数字签名;

2、使用同样的Hash算法计算证书元数据的数字摘要;

3、使用签发人的公钥对数字签名进行解密,得到解密后的摘要;

4、对比2和3两个步骤得到的数字摘要值,如果相同,则说明这个数字证书确实是被签发人验证过合法证书,证书中的信息(最主要的是所有者的公钥)是可信的。

它的流程是:

加解密与HTTPS(5)


加解密与HTTPS(5)




关于证书的最后一个问题:证书的关键在于签发人的公钥,但如果签发人本身有问题,信用差,那谁又来替TA担保呢?就好比清北复哈的证书(文凭),谁来保证他们和野鸡大学不一样呢?

真实世界中有国家这个强力后盾为名牌大学做担保,但是互联网里没有这样的威权或公器存在,有的是证书链。

以某付宝为例,TA的证书层级大概是这样:

DigiCert Global Root CA

Secure Site CA G2

*.alipay.com


从上到下,级别依次递减。

就像这样:

加解密与HTTPS(5)


这种证书层级结构就是证书链。以刚才的某付宝举例,它的的证书层级有三个级别:

1、终端用户:就是某付宝,该证书包含某付宝的公钥,某付宝的用户支付或者调用某付宝接口,就是使用这个公钥将数据加密后再传给某付宝的;

2、中间签发人:对公钥持有者身份的证书进行认证,负责确认确实是某付宝在使用终端用户证书,也就是负责确认「某付宝确实是某付宝」,这类签发人可以有很多层级;

3、根root:*别的签发人,负责认证所有中间签发人,类似于国家教育部,认证和管理下面所有的教育机构。


为了得到终端用户的公钥,就要得到终端用户证书。为了证明该证书可信,必须向上追溯该证书是否被中间签发人机构认证。继续线上追溯,直到找到最终的Root CA。

证书追溯的过程是这样的:

加解密与HTTPS(5)




感谢您的大驾光临!咨询技术、产品、运营和管理相关问题,请关注后留言。欢迎骚扰,不胜荣幸~