数字证书相关初步纪要
一、数字证书
数字证书是互联网通讯中标志通讯各方身份信息的一系列数据,提供了一种在网上验证身份的方式,由权威机构CA授权发行。经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件。
证书库一般提供了X509证书库和证书应用数据两个方面内容。其中,X509证书库包含了标准证书体、定制化场景证书体及应用扩展描述,用以防止证书伪造等安全威胁。而证书应用数据则提供给应用相关的服务,如代码签名证书、HTTPS证书、文件签名证书等。
二、X509证书库
X.509格式证书是被广泛使用的数字证书标准,用于标志通讯各方身份信息的一系列数据。X.509标准规定了证书可以包含什么信息,并说明了记录信息的方法。其中,X.509结构中包括版本号、序列号、签名算法、颁布者、有效期、主体、主体公钥、主体公钥算法、签名值等信息。
1.标准证书体
标准证书体一般包括数字证书标准的版本信息、编码格式等,属于证书的规范形式。X.509证书格式的版本目前只有3个版本,每个新版本都为证书增添了一些可选的功能,最常用的版本为v3。X.509证书的数据结构由ASN1进行描述,并使用ASN1语法进行编码,常见格式有PEM、EDR、CER、PFX等,此处仅对PEM进行说明。
① V1版本
标准证书体格式的第一版包括了版本号、序列号、签名算法、有效性及主体信息。其中,版主用来定义证书的版本号,一般为整数形式;序列号对CA所发布的每个证书具有唯一性,属于大整数形式;签名算法用来标识CA签署证书的算法。有效性则定义了证书的有效期;主体用以表明证书的发布对象。
② V2版本
V2在V1的基础上添加了两个选项:发布者的惟一标识和主体的惟一标识。当多个证书发布者都使用相同的X.500名字,发布者的惟一标识可以将它们区分开来;而当两个主体有相同的X.500名字,主体惟一标识则可以将它们区分开来。由于这两项很少用到,因此第二版的证书也很少用到。
③ V3版本
X.509在第三版中添加了扩展的功能, 虽然复杂但是很重要。扩展在v3版证书中是一个可选项,但是可以提供如下内容:主体和发布者的属性、密钥的用法和策略以及证书路径约束。主体和发布者的属性,这一部分提供了主体以及发布者的附加属性。
④ PEM
PEM是用ASCLL(BASE64)编码的X509文件扩展名。
三、证书应用数据
由于互联网服务不同,数字证书的应用也不尽相同。一般常见的应用有代码签名证书、HTTPS证书以及文件签名证书等。
1.代码签名证书
代码签名证书使得软件开发商能对其软件代码进行数字签名。通过对代码的数字签名来标识软件来源以及软件开发者的真实身份,保证代码在签名之后不被恶意篡改。使用户在下载已经签名的代码时,能够有效的验证该代码的可信度。
① PE
为Windows系统下的可执行文件签发代码签名。
② APK
一般使用Java自带的命令行工具,对Android系统下的apk文件进行签名。若程序没有签名或者签名不正确,则打包过后的apk程序无法安装到手机上;若替换包的签名或添改包里内容将导致原始证书无效。
③ 其他
对其他系统下可执行文件进行签名。
2.HTTPS证书
HTTPS是具有安全性的SSL加密传输协议, SSL证书的使用解决了HTTP协议由于没有身份标识而导致的中间人攻击问题。
3.文件签名证书
对文件进行数字签名,保障文件安全性。常见且重要的应用有文档签名和邮件签名。
① 文档签名
文档签名证书不仅可以验证签名者的真实身份,还可以确保电子文档的完整性和可靠性。对文档进行数字签名必须确认以下两点:一是文件的确是由签名者签署;二是文件内容自签发后到收到为止未曾做过任何修改。
② 邮件签名
邮件证书能够对邮件进行签名并在通行过程中对邮件进行加密处理,确保通讯安全。同时,邮件签名证书能够让收件人确认发件人的真实性,同时验证邮件 是否在途中被篡改。邮件签名支持个人身份验证和企业身份验证两种模式,支持不同业务场景需求。