公钥基础设施(二):数字证书

本篇主要讲数字证书的相关概念和作用。

认识数字证书

直观认识

我们先选择任意一个HTTPS的网站(例如https://www.baidu.com/),在Chrome浏览器中用F12调出开发者工具,选择Security标签页。

点击View certificate,可以看到一张证书。

这张证书是一张服务器证书,在详细信息中我们可以看到这张证书的基本信息。

所谓HTTPS,其实就是HTTP + SSL。
SSL的详细协议在下一篇讲,目前只需知道SSL所使用的数字证书就是这里的证书。而HTTPS就是用对方的公钥加密自己的通话,与对方协商出一个安全的对称密钥和加密方式,然后将双方通话过程全部用对称密钥加密(使用对称密钥是为了节省开销,每次都非对称加密会极大加重系统负担),由于协商过程是使用了公钥机制加密的,所以对称密钥也是安全的。

定义

数字证书就是互联网通讯中标识通讯各方身份信息的一系列数据,提供了一种在Internet上验证身份的方式,其作用类似于驾驶执照或身份证。
数字证书通常由数字证书授权中心(Certificate Authority — CA)签发,带有CA的数字签名。其中包含公开密钥拥有者信息以及公开密钥的文件。
最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。

作用

其实说完最简单的证书,我们就可以知道数字证书最基本的功能是什么了。

格式

目前的证书通常遵循 ITUT X.509国际标准,证书主要包括以下信息:

  • 版本号:用来区分X.509的不同版本
  • 序列号:每一个证书都有惟一的数字型编号
  • 认证机构标识:颁发该证书的机构惟一的X.500名字
  • 主体标识:证书持有者的名称
  • 主体公钥信息:和该主体私钥相对应的公钥
  • 证书有效期:证书开始有效期和证书失效期
  • 密钥/证书用法:描述该主体的公/私密钥对的合法用途
  • 扩展:说明该证书的附加信息
  • 认证机构签名:用认证机构的私钥生成的数字签名


认证机构签名是将主体部分hash后用认证机构私钥加密,如果能够被认证机构公钥解密就说明了证书内容没有被篡改。
验证方式如下图:

数字证书的使用

PKI的基本组件

  • 证书授权中心CA
    • 证书签发机构,是PKI的核心,使PKI 应用中权威的、可信任的、公正的第三方机构。主要负责产生、分配并管理所有参与网上交易的实体所需的身份认证数字证书。
  • 证书库
    • 证书的集中存放地,提供公众查询。
  • 密钥备份及恢复系统(optional)
    • 对用户的解密密钥进行备份,当丢失时进行恢复,而签名密钥不用备份和恢复。
  • 证书撤销处理系统
    • 证书由于某种原因需要作废,终止使用,将通过证书撤销列表(CRL)来实现。
  • PKI应用接口系统
    • 为各种各样的应用提供安全、一致、可信任的方式与PKI交互,确保所建立起来的网络环境安全可靠,并降低管理成本。

PKI的基本原理

首先,PKI有两条基本原则:

  • 有些安全性非常高、信誉非常好的CA是所有人都可以信任的,他们拥有签发下级CA的权利。他们的证书通常被内置在操作系统的可信任列表里。
  • 如果一个CA是可信任的且CA拥有签发下级证书的权利,那么他签发的证书也是可信任的。

所以,通常我们看到的证书都是一条证书链。通常 根CA 不签发末端的客户证书,只负责签发 CA 证书,而 CA 根据他们证书中被授予的权限,有些可以签发下级CA有些只可以签发客户证书。
每张证书都会有过期时间和一个证书撤销列表(CRL)的URL。如果一张证书过期或被写进了CRL,那么证书就会作废(这往往是由私钥泄露导致的)。