PKI简介和Ubuntu下openssl关于证书的部分操作(创建CA,申请证书,注销证书)
前言
做本实验时学习引用了以下几篇文章
https://www.jianshu.com/p/5914b504f775
https://zhuanlan.zhihu.com/p/24954346
https://www.jianshu.com/p/1312fcf53ed7
在自己构建的ca中可能时初始化操作不完善,导致最后的 更新证书吊销列表 和 查看证书吊销列表 操作失败
https://www.jianshu.com/p/1312fcf53ed7文章操作中的成功了
提示:以下是本篇文章正文内容,下面案例可供参考
一、PKI(公钥基本结构)简介
1、什么是PKI?
公钥基本结构(PKI)用于描述管制或操纵证书与公钥及私钥的策略、标准和软件。
实际上,PKI 是指由数字证书、证书颁发机构 (CA) 以及对电子交易所涉及各方的合法性进行检查和验证的其它注册机构组成的一套系统。
PKI体系是计算机软硬件、权威机构及应用系统的结合。它为实施电子商务、电子政务、办公自动化等提供了基本的安全服务,从而使那些彼此不认识或距离很远的用户能通过信任链安全地交流。
2、PKI组成
一个典型的PKI系统包括 证书、PKI策略、软硬件系统、证书机构CA、注册机构RA、证书发布系统和PKI应用等。
(1)公钥证书 ,
通常简称为证书 ,用于在 Internet、Extranet 和 Intranet 上进行身份验证并确保数据交换的安全。证书的颁发者和签署者就是众所周知的 证书颁发机构 (CA),将在下一节中介绍。颁发证书的实体是证书的主体
证书提供了一个在公钥和拥有相应私钥的实体之间建立关系的机制。目前最常用的证书格式通过 ITU-T X.509 版本 3 (X.509v3) 国际标准定义。RFC 2459 是 X.509v3 的一个配置文件,进一步阐明了 X.509v3 中定义的字段。
(2)PKI安全策略
建立和定义了一个组织信息安全方面的指导方针,同时也定义了密码系统使用的处理方法和原则。它包括一个组织怎样处理密钥和有价值的信息,根据风险的级别定义安全控制的级别。
(3)证书机构CA
证书机构CA是PKI的信任基础,它管理公钥的整个生命周期,其作用包括:发放证书、规定证书的有效期和通过发布证书废除列表(CRL)确保必要时可以废除证书。
CA 的类型包括以下三种:
[1]自签名 CA 。 在自签名 CA 中,证书中的公钥和用于验证证书的密钥是相同的。一些自签名 CA 是根 CA。
[2]从属 CA 。在从属 CA 中,证书中的公钥和用于核实证书的密钥是不同的。一个 CA 向另一个 CA 颁发证书的过程叫做 交叉认证 。
[3]根 CA 。根 CA 是一种特殊的 CA,它受到客户无条件地信任,位于证书层次结构的最高层。所有证书链均终止于根 CA。根颁发机构必须对它自己的证书签名,因为在证书层次结构中再也没有更高的认证机构了。
注:所有自签名 CA 都是根 CA,因为到自签名 CA 时证书链就终止了。
(4)注册机构RA
注册机构RA提供用户和CA之间的一个接口,它获取并认证用户的身份,向CA提出证书请求。它主要完成收集用户信息和确认用户身份的功能。这里指的用户,是指将要向认证中心(即CA)申请数字证书的客户,可以是个人,也可以是集团或团体、某政府机构等。注册管理一般由一个独立的注册机构(即RA)来承担。它接受用户的注册申请,审查用户的申请资格,并决定是否同意CA给其签发数字证书。
注册机构并不给用户签发证书,而只是对用户进行资格审查。
因此,RA可以设置在直接面对客户的业务部门,如银行的营业部、机构认识部门等。
当然,对于一个规模较小的PKI应用系统来说,可把注册管理的职能由认证中心CA来完成,而不设立独立运行的RA。
但这并不是取消了PKI的注册功能,而只是将其作为CA的一项功能而已。
PKI国际标准推荐由一个独立的RA来完成注册管理的任务,可以增强应用系统的安全。
(5)证书发布系统
证书发布系统负责证书的发放,如可以通过用户自己,或是通过目录服务器发放。目录服务器可以是一个组织中现存的,也可以是PKI方案中提供的。
PKI的应用
PKI的应用非常广泛,包括应用在web服务器和浏览器之间的通信、电子邮件、电子数据交换(EDI)、在Internet上的信用卡交易和虚拟私有网(VPN)等。
通常来说,CA是证书的签发机构,它是PKI的核心。众所周知,构建密码服务系统的核心内容是如何实现密钥管理。公钥体制涉及一对密钥(即私钥和公钥),私钥只由用户独立掌握,无须在网上传输,而公钥则是公开的,需要在网上传送,故公钥体制的密钥管理主要是针对公钥的管理问题,较好的方案是数字证书机制。
二、Ubuntu下openssl关于证书的部分操作
1.实验说明(准备)
#演示操作在同一台机器上进行
#RA的审核工作在ca中完成
#在桌面创建 shiyan6 文件夹 其中有ca和client两个文件夹
#在ca文件下构建简单的证书机构ca
#client 作为客户端产生(请求证书).csr
2、构建简单的CA(创建CA根证书)
(在PKI体系下,CA在发放证书之前,需要先创建一个自己的CA根证书。)
(1)生成私钥
在ca文件夹生成一个private.key的私钥文件,里面保存我们指定的2048位的rsa私钥
cd ca
openssl genrsa -out private.key 2048

(由于openssl的私钥保存了足够的信息(RSA原理),可以推导出其对应的公钥,具体的导出也有相应的命令。)
(2)自签名
在PKI体系中,CA的签名可以自签名或从父CA获取,这取决于设计的架构。在本例中,我们使用自签名的方式创建CA的根证书
openssl req -new -x509 -key private.key -out root.crt

上面的命令会根据私钥生成一个自己签名的证书root.crt
(3)查看证书信息

(4)初始化证书库
对于CA来说,需要记录其已经发放的证书,因此需要先初始化相关的文件,在ubuntu中,openssl的配置文件在/usr/lib/ssl/openssl.cnf中,内有一个属性dir是CA保存证书记录的地方,
[1]、更改openssl.cnf中dir的地址(在root权限下使用vi openssl.cnf 打开文件更改)

[2]更改为/home/un123/pki/demoCA #(可以不更改,那么下面一步创建文件的位置就是原来的dir所指向的目录)

[3]、创建/home/un123/pki/demoCA 目录并在其下创建文件
touch index.txt #创建证书索引文件
echo 01 > serial #指定证书颁发的两位16进制数
echo 01 > crlnumber #指定证书吊销的序号证书
客户端向CA请求证书
客户端相关的操作都在client目录中处理
(1)客户端生成密钥
与上面的操作类似,先生成私钥文件
openssl genrsa -out private.key 1024

(2)客户端创建证书请求文件
根据私钥文件,生成证书请求文件CSR,CSR中一般会包含请求者的公钥,这里的请求者就是客户端,由于客户端的私钥文件可推导出公钥,再加上下面的命令执行时要求输入的组织信息,就可以生成CSR了。
openssl req -new -out client.csr -key private.key

ca将客户端的证书请求文件CSR认证为CST
由于CA相关的数据在ca文件夹,我们先切换到ca中,然后对csr文件进行处理,生产发放给客户端的证书
(1)对client.csr认证
openssl ca -in ../client/client.csr -out ../client/client.crt -days 365 -keyfile private.key -cert root.crt

ca命令可以用来发放证书,-in指定了输入的csr文件,-out是发放给客户端的证书 -keyfile是ca的根证书私钥文件,-cert是CA的根证书

至此,我们完成了客户端证书的发放。
证书的使用
客户端A有了自己的证书之后,就可以在通信时将自己的证书发送给客户端B,客户端B拿到证书后,与CA的根证书进行校验,

通过后可以从证书中提取客户端A的公钥,然后对要发送给A的数据进行加密,客户端A收到数据后,使用自己的私钥进行解密后就可以看到信息了。
ca对证书注销
(1)在客户端获取要吊销的证书的serial

(2)在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致,
(3)将ca文件中的ca根证书root.crt复制一个到/home/un123/pki/demoCA下并重命名为cacert.pem(下面的吊销证书的命令需要在这个位置引用ca自签名证书)
(4)将ca文件中的私钥private.key复制一个到/home/un123/pki/demoCA/private重命名为cakey.pem(下面的吊销证书的命令需要在这个位置引用ca的私钥)

(5)吊销serial=01的证书
openssl ca -revoke /home/un123/pki/demoCA/newcerts/01.pem

(6)更新证书吊销列表
(7)查看证书吊销列表(这一步和上一步失败了,应该是配置环境文件时少了部分)
#crl.pem(当前的证书)文件没弄清楚

总结
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
