前言

你可能已经听过很多CA机构,数字证书,签名等等一系列的东西,但是可能都不太在意,认为其根本没什么用。
作为一个前端,讲道理,你想得没错,确实没什么用,只是在学习https的时候如果理解了这些东西的话会有更好的理解。多学点东西总不会错吧~

CA是什么?

CA是Certificate Authority的缩写,也叫“证书授权中心”。
通俗一点讲,就是发证书的机构,权威机构。
打开你的ie浏览器--internet选项--内容--证书
image.png

可以看到这里有个受信任的根证书颁发机构,这些里面的颁发者就是我们所说的CA,那么这些CA是哪里来的呢?

全球权威的CA,就那么几个公司,这几个公司的证书,已经被各软件厂商设置成可信任的根证书了,内置在系统中了。至于怎么认证为权威,我就不太懂了,他们颁发证书的流程也不太清楚了,反正你就信他们就完了,如果他们出错了,就会被取消CA资格。(提一个沃通,因为乱jb发证书被取消了资格)。当浏览器判断证书颁发机构合法与否的时候,就会查看这个机构有没有存在于自己的系统内置中。

上图中还有一个中间证书颁发机构,其实这里是有一个证书链的,上面那个根证书颁发机构发一个证书给A,然后A又发了一个证书给B,那么B也是合法的,A就是这个中间证书颁发机构。根证书->A->B就是一条证书链,类似于朋友介绍朋友。

数字证书是什么?

数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份。

我们可以通过下面这样来获取我们浏览中的网站的证书信息。
image.png

数字证书的内容主要有哪些呢?

  • 公钥内容
  • 颁发者
  • 使用者
  • 有效期
  • 签名
  • 其他信息

加密算法

提到签名之前,我们要先了解下大概的加密算法有哪些。

  • 对称加密
  • 非对称加密
  • hash算法

对称加密

特性:加密解密用同一个密钥。像指纹锁,又可以加密又可以解密。

  • 明文->通过密钥加密->密文
  • 密文->通过密钥解密->明文

优点:加密很快
缺点:密钥一泄密,全部人玩完。比如一个公司公用一个密钥,你不能要求每个员工都做好了保密工作,一旦一个员工泄密了密钥,因为对称加密用的是同一把钥匙,那么所以人的密文都能被解开了。如果你要1对1用不同密钥的话,那管理密码又是另外一个难题了。

非对称加密

特性:加密和解密用的不一样的钥匙,就像传统锁,一个是锁头,一个是钥匙。

  • 明文->公钥->密文
  • 密文->密钥->明文

优点:跟上面那个相反,安全性更高,即使被泄露了一个员工的密钥,其他人的秘密也不会被泄露。管理密码方便。
缺点:加密很慢,比上面那个可能慢上100倍。这也是为什么HTTPS不全程使用非对称加密的原因。

hash算法

特性:单向加密,无法逆转,常见有md5。能够隐藏原始信息,像我们的密码,我们只需要对比md5后的密码是否一致,不用关心原文是什么。
讲道理,优缺点都要有对比嘛,这个没啥好对比的,所以没什么优缺点。

签名是什么?

签名是一串经过hash计算的字符。用于判断证书是否合法。

在上面我们提到了数字证书的内容,里面有一个公钥,这个公钥是啥?

CA机构拥有一对非对称加密的公钥密钥,在发证书的时候啊,就会把这个公钥给出去,他就自己偷偷保存着密钥。

CA给证书签名的流程如下:

  1. 首先生成一个文件P,内容有公钥,颁发者,使用者,有效期等。
  2. 然后把证书内容P经过hash算法计算,得到一个hash值H
  3. 最后使用自己私藏的私钥对H进行RSA加密(非对称),得到签名信息S

然后将内容P,签名S连成一个文件,这个文件就是所谓的数字证书了。所以数字证书里,包括证书持有者的身份信息,证书信息,证书持有人的公钥,以及签名信息。

签名有什么用?

是用来验证我们这个证书是否为权威CA机构所发或者证书是否被篡改。

现在假设客户端得到了这个证书,如何确认这个证书属于谁的呢?

  • 首先,证书里有公钥,那我们可以用这个公钥解密这个签名S
    因为CA用的是RSA非对称加密,而且这个公钥是公开的。那我们根据前面介绍的加密算法中可以知道:签名S->经过公钥解密->得到H'
  • 然后,我们对比这个H'和我们上一节讲到的H
    • 如果两者一致,那么就是合法的,正常的
    • 如果两者不一致,那么可能是内容被篡改或者不是由CA签发的

如果不合法呢,那么客户端就会弹出一个框,说XXX不受信任,可能潜藏危险,是否要继续前往

总结

CA证书发一个证书给网站,证书里包括了一些颁发者的信息,签名以及过期时间等等信息。客户端访问网站的时候,会检查你的证书是否合法,是否被黑客篡改,通过判断用公钥解密签名后和原来的hash值是否保持一致来决定是否弹窗警告。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Scroll Up