数字证书介绍
数字证书简称证书,它是一个经证书授权中心(即在PKI中的证书认证机构CA)数字 签名的文件,包含拥有者的公钥及相关身份信息。 数字证书可以说是Internet上的安全护照或身份证。当人们到其他国家旅行时,用护照可以证实其身份,并被获准进入这个国家。数字证书提供的是网络上的身份证明。
数字证书技术解决了数字签名技术中无法确定公钥是指定拥有者的问题
证书结构
简单的证书包含一个公钥、名称以及证书授权中心的数字签名。一般情况下证书中 还包括密钥的有效期,颁发者(证书授权中心)的名称,该证书的序列号等信息,证书的结构遵循X.509 v3版本的规范。
书接上文,数字证书就是解决了数字签名存在的问题进而引入的,在数字签名中,对方无法知道公钥就是你的,因此在数字证书中,加上了一个可信的第三方——CA,由CA来给一个设备颁发证书,证书中包含以下的这些信息:
- 版本:即使用X.509的版本,目前普遍使用的是v3版本(0x2)。
- 序列号:颁发者分配给证书的一个正整数,同一颁发者颁发的证书序列号各不相同,可用与颁发者名称一起作为证书唯一标识。
- 签名算法:颁发者颁发证书使用的签名算法。
- 颁发者:颁发该证书的设备名称,必须与颁发者证书中的主体名一致。通常为CA服务器的名称。
- 有效期:包含有效的起、止日期,不在有效期范围的证书为无效证书。
- 主体名:证书拥有者的名称,如果与颁发者相同则说明该证书是一个自签名证书。
- 公钥信息:用户对外公开的公钥以及公钥算法信息。
- 扩展信息:通常包含了证书的用法、CRL的发布地址等可选字段。
- 签名:颁发者用私钥对证书信息的签名。
版本和序列号无需解释,就是CA设备用来管理证书使用的ID,签名算法告诉用户你该怎么验证这个签名信息,颁发者就是由哪个CA颁发的,有效期也不用多说,用来控制证书的时效性,注意,这个一般是根据客户端时间进行判断。主体名,这个项很重要,是告诉别人这个是颁发给谁的,在HTTPS应用中,通常是域名或者域名的通配符。公钥信息即为用户的对外的公钥,如果需要进行数字加密传输时,可以使用的。扩展项一般用来添加一些补充信息,类似于备注。签名,这也是整个证书的有效性的保证,算是身份证的防伪标识,当对方校验你的证书是否为真的时候,就是去用颁发者CA的公钥进行解密,和签名数据的HASH摘要进行对比。