openssl 证书概念介绍
一、证书申请
生成 X509 数字证书前,一般先由用户提交证书申请文件,然后由 CA 来签发证书。
大致过程如下:
1)
用户生成自己的公私钥对;
2)
构造自己的证书申请文件,符合 PKCS#10 标准。该文件主要包括了用户信息、公钥以及一些可选的属性信息,并用自己的私钥给该内容签名;
3)
用户将证书申请文件提交给 CA;
4)
CA 验证签名,提取用户信息,并加上其他信息(比如颁发者等信息),用 CA 的私钥签发数字证书;
X509 证书申请的格式标准为 pkcs#10 和 rfc2314。
查看证书请求文件的内容
openssl req -in cert.req -text
二、X509 数字证书
数字证书是将用户(或其他实体)身份与公钥绑定的信息载体。一个合法的数字证书不仅要符合 X509 格式规范,还必须有 CA 的签名。用户不仅有自己的数字证书,还必须有对应的私钥。
X509v3 数字证书主要包含的内容有[1]:证书版本、证书序列号、签名算法、颁发者信息、有效时间、持有者信息、公钥信息、颁发者 ID、持有者 ID 和扩展项。
三、证书验证项
数字证书验证中,主要考察的项有:
i. 有效期,看证书是否已经失效;
ii. 签名,用颁发者的公钥来验证签名;
iii. 证书用途;
iv. 名字比较,证书中的颁发者信息应与颁发者证书的持有者信息一致;
v. 扩展项约束;
四、PEM概述
Openssl 使用 PEM(Privacy Enhanced Mail)格式来存放各种信息,它是 openssl 默认采
用的信息存放方式。Openssl 中的 PEM 文件一般包含如下信息:
1)内容类型表明本文件存放的是什么信息内容,它的形式为“-------BEGIN XXXX ------”,与结尾的“------END XXXX------”对应。
2) 头信息表明数据是如果被处理后存放,openssl 中用的最多的是加密信息,比如加密算法以及初始化向量 iv。
3) 信息体为 BASE64 编码的数据。
五、OCSP概述
在线证书状态协议(OCSP,Online Certificate Status Protocol,rfc2560)用于实时表明证书状态。OCSP 客户端通过查询 OCSP 服务来确定一个证书的状态。OCSP 可以通过 HTTP协议来实现。rfc2560 定义了 OCSP 客户端和服务端的消息格式
六、CRL
证书撤销列表(Certificate Revocation List,简称 CRL),是一种包含撤销的证书列表的签名数据结构。CRL 是证书撤销状态的公布形式,CRL 就像信用卡的黑名单,用于公布某些数字证书不再有效。
CRL 是一种离线的证书状态信息。它以一定的周期进行更新。CRL 可以分为完全 CRL和增量 CRL。在完全 CRL 中包含了所有的被撤销证书信息,增量 CRL 由一系列的 CRL 来表明被撤销的证书信息,它每次发布的 CRL 是对前面发布 CRL 的增量扩充。
基本的 CRL 信息有:被撤销证书序列号、撤销时间、撤销原因、签名者以及 CRL 签名等信息。
基于 CRL 的验证是一种不严格的证书认证。CRL 能证明在 CRL 中被撤销的证书是无效的。但是,它不能给出不在 CRL 中的证书的状态。如果执行严格的认证,需要采用在线方式进行认证,即 OCSP 认证。
七、PKCS7
加密消息语法(pkcs7),是各种消息存放的格式标准。这些消息包括:数据、签名数据、数字信封、签名数字信封、摘要数据和加密数据。
八、PKCS12
pkcs12 (个人数字证书标准)用于存放用户证书、crl、用户私钥以及证书链。pkcs12 中的私钥是加密存放的。