ca 证书机制

1,849 阅读4分钟

很多人都听过 CA 证书,其实我们每天都在使用它,即使你不知道。下面通俗的解释一下 CA 证书是什么。

假设你 A 公司的一名技术人员,要去 B 公司拜访,但是 B 公司的人都不认识你,怎么办?

常见的做法是,A 公司给你开张介绍信:“xxx公司委派技术员xxx前往贵公司办理业务,请予以方便。”然后在介绍信上盖上公章。

你来到 B 公司,给前台递上介绍信,B 公司相信你不是坏人,给你相应的配合(权限)。

这里有两个问题先思考,留待后面解决:

  1. 人是假的,介绍信是真的?
  2. 人是假的,介绍信是假的(私刻公章)?

假如来 B 公司办业务的人非常多,每家公司的公章都不相同,前台很难识别各种各样的公章,非常麻烦。

有个中介公司 C 发现这个商机,专门开办一项代理公章业务,做公司间的信用担保。

从此,A 公司去 B 公司办事需要带 2 份介绍信:

  1. 含有 C 公司公章和 A 公司公章的介绍信,并注明 C 公司信任 A 公司
  2. 含有 A 公司公章的介绍信,写上 “xxx公司委派技术员xxx前往贵公司办理业务,请予以方便。”

搞这么麻烦有啥好处呢?首先前台只需要记住 C 公司的公章即可,当拿到两份介绍信以后,先对第一份介绍信的 C 公章进行确认,确认无误后再对比 2 份介绍信上的 A 公章是否一致,一致则可以信任。

相关专业术语

故事讲完了,结合对故事的理解,下面讲技术。

证书

证书英文叫 digital certificate 或 public key certificate,用来证明某个东西确实是某某的东西,例如通过公章证明 A 公司的介绍信确实是 A 公司颁发的。

CA

CA 是 cretificate Authority 即证书授权中心。

CA 是负责管理和签发证书的第三方机构,就像 C 公司。机构必须是所有人达成信任共识的,具有足够的权威才能在中间做信任担保(其实这里就存在安全性问题,有时候信任是脆弱的)。

CA 证书

由权威 CA 颁发的证书,虽然人人都可以颁发证书,但是个人没有权威性,就像是我给你颁发一个最牛逼程序员将,没有权威性,如果美国计算机协会给你颁发个图灵将,权威性大大的,走到哪都被认可。

证书间信任关系

用一个证书来证明另一个证书是可信的,例如 C 公司公章和 A 公司公章在同一张介绍信上,注明公章 C 信任公章 A,A 也是可信的。

证书信任链

简单说,信任关系是可以传递的,只要你信任头一个证书,后续的证书都是可以信任的。

C 信任 A,A 信任 A1,A1 信任 A2,A、A1、A2 都是可信任的。

根证书

根证书 root certificate。在证书的信任链中,A1 可以由 A 证明可信任,A 由 C 证明可信任,C 由谁证明可信任呢?C 不需要证明自己是可信任的,因为它是权威机构,这就是根证书(处于树结构的顶端)。

根证书是整个证书安全体系的根本,如果根证书出现问题,全部 gg。

证书的作用

HTTPS

HTTPS 是加密的协议,可以保证传输过程中,无法被窃取信息。但是加密并不能保证万事大吉,假如黑客把你诱骗到一个假的 HTTPS 站点,然后你输入账号密码,信息就被窃取了,加密不能保证访问网站的真实性。

为了防止上面的情况,HTTPS 不仅有加密机制,还有一套证书机制(通过权威机构授权网站的真实性)。

开启 HTTPS 的网站都有一个权威机构颁发的 CA 证书,我们在浏览器访问某个 HTTPS 网站时,会验证该网站的证书确保网站的真实性(网站证书被某个根证书信任、证书上绑定的域名与网站一致、证书没有过期),证书错误时浏览器会弹出警告,告诉你证书有问题,就需要怀疑网站的真实性了。