参考文档:https://blog.csdn.net/miouqi/article/details/75268402
安装
windows去openssl官网下载安装包,然后将openssl的路径添加到环境变量PATH下面。
Linux安装可以参考:https://segmentfault.com/a/1190000016204693
准备(ubuntu在root权限)
// 创建ca和user(客户端)两个目录
// 进入ca目录,创建demoCA/private文件夹
// 进入ca/demoCA目录,创建index.txt(证书索引库), serial(记录所有颁发证书的serial number)文件
注意:index.txt在windows下必须为ANSI格式的编码
CA准备
为CA生成私钥
// 进入CA目录 openssl genrsa -out ./demoCA/private/cakey.pem 2048
为CA生成自签名证明
- ubuntu
openssl req -new -x509 -key ./demoCA/private/cakey.pem -days \3650 -out /etc/pki/CA/cacert.pem
- windows
openssl req -new -x509 -key ./demoCA/private/cakey.pem -days 3650 -out ./demoCA/cacert.pem
颁发证书
// 进入user目录
为用户生成私钥
openssl genrsa -out ./user.key 2048
生成CSR文件
openssl req -new -key ./user.key -days 365 -out ./user.csr
将证书文件传输给CA
// 同一主机下直接拷贝,不同主机,ubuntu可以使用下面命令传输
scp ./user.csr [ip]:/tmp
// windows
copy ./user.csr ../ca/tmp/
CA签署证书,并发给申请者
// 用notepad ++ 打开./demoCA/serial,添加01。如果用echo,编码字符会变。
// 第一次添加的时候需要编辑serial,后续都不需要
// 在demoCA下创建newcerts目录,用户ca存储颁发的证书信息
// 进入ca目录
openssl ca -in ./tmp/user.csr -out user.crt -days 365
// 将cert转换为pem
openssl x509 -in user.crt -out user.pem -outform PEM
// 查看证书信息
openssl x509 -in ./user.crt -noout -text
openssl x509 -in ./user.pem -noout -text
CA将已签名证书传输给申请者
// windows拷贝,unbutu可以使用cp或者scp
ca删除申请者csr文件
// windows直接删,ubunu可以使用rm命令
吊销证书
在客户端获取要吊销的证书的serial
openssl x509 -in .\certs\user1.crt -serial -subject
在CA上,根据客户提交的serial与subject信息,对比检验是否与index.txt文件中的信息一致,一致吊销证书
openssl ca -revoke ./demoCA/newcerts/01.pem
CA指定第一个吊销证书的编号,注意:第一次更新吊销证书列表前,才需要执行
// 进入ca目录,该目录下创建crlnumber文件 echo 01 > ./demoCA/crlnumber
CA更新证书吊销列表
// 创建crl目录 openssl ca -gencrl -out ./crl/crl.pem openssl crl -in ./crl/crl.pem -noout -text # 查看crl文件