openssl生成代码签名证书,时间戳证书,OCSP证书,吊销证书列表,架设PKI服务器.

自己花了大量时间研究这个,记录一下.

用openssl生成代码签名证书,时间戳证书,OCSP证书,吊销证书列表,架设PKI服务器.

 

 

 

 

本篇记录主要RootCa证书生成.

 

 

准备

首先将openssl默认的配置文件拷贝一份到工作目录.   ca.cnf

新建ca目录,用于存放证书相关文件.

 

编辑ca.cnf

 

[ v3_ca ]
basicConstraints = critical,CA:true
keyUsage                = critical, cRLSign, digitalSignature, keyCertSign

 

keyUsege

这个就是表明证书用途. 这个组合基本上最高功能的组合了.

 

basicConstraints

注意这个CA:true

这个表明是CA证书.

Root证书,所有中间证书都要表明这个.如果是最后一级这个不需要了.

 

生成csr和key

openssl req -passout 'pass:123456' -newkey rsa:4096 -keyout ./ca/ca.key -out ./ca/ca.csr -config ./ca.cnf 

 

会在ca目录里面生成 证书请求文件 (.CSR) 和密钥文件 (.KEY)

注意这个有个密码,我随便写的123456,

然后这样会让你输入csr相关信息

 

Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:A
Locality Name (eg, city) []:B
Organization Name (eg, company) [Internet Widgits Pty Ltd]:C
Organizational Unit Name (eg, section) []:D
Common Name (e.g. server FQDN or YOUR name) []:E  <----这个是证书名字
Email Address []:

国家名称(2字母代码)[AU]:CN
州或省名(全名)[某州]:A
地点名称(如城市)[]:B
组织名称(如公司)[互联网Widgits私人有限公司]:C
组织单位名称(如部门)[]:D
通用名称(例如服务器FQDN或您的名称)[]:E   <----这个是证书名字
电子邮件地址[]:

 

最终生成证书显示效果

这里显示正好和输入顺序相反.

 

 

 

[可选]取消Key密码

 

这部是可选的,不过我建议操作下,可以删除key中的密码,后面的操作可以不需要输入RootCa的密码.

openssl rsa -in ./ca/ca.key -out ./ca/ca.key

 

会提示你输入密码,密码就是上一步命令中的密码.

 

生成crt证书文件

 

生成一个100年证书.

有效期从2000年1月1号开始.

faketime '2000-01-01 00:00:00' openssl x509 -req -sha384 -days 36525 -in ./ca/ca.csr -signkey ./ca/ca.key -out ./ca/ca.crt -extfile ./ca.cnf -extensions v3_ca

 

faketime是linux一个软件包,需要自己安装的,用于伪造时间. (我是win10在wsl子系统中操作的.)

 

 

证书效果

 

 

 

 

 

安装证书

 

点击安装证书,安装到"受信任的根证书颁发机构"

 

 

安装完毕后证书就正常了.

后面的博文还会介绍其他安装证书的办法.

 

 

[可选]生成吊销证书列表

 

此功能自签名证书用不上,纯粹自己顺便研究的.

 

吊销子证书

openssl ca -keyfile ./ca/ca.key -cert ./ca/ca.crt -revoke xxxxx.crt

吊销xxxxx证书.

 

生成吊销证书列表文件

openssl ca  -config ./ca.cnf -gencrl -keyfile ./ca/ca.key -cert ./ca/ca.crt -out ./ca/ca.crl

执行命令前需要在当前工作目录建一个demoCA的目录,还有建立两个文件.这个抖可以在cnf文件中自己定义的.

demoCA/
├── crlnumber
├── index.txt 

crlnumber文件

里面必须随便写一初始数字

这个请求编号,累加的,生成一次自动加一,用于服务器通告是否更新了.

这个会在证书吊销列表(.crl)文件上显示.

 

index.txt文件

吊销证书列表.

 

crl就是吊销列表文件.

 

 

 

参考

仅仅在本篇列出参考列表.

其他相关博文不再重复表述,.

 

 

https://www.cnblogs.com/f-ck-need-u/p/7113610.html

https://www.openssl.org/docs/man1.0.2/man1/openssl-req.html

https://superuser.com/questions/738612/openssl-ca-keyusage-extension

https://www.openssl.org/docs/man1.0.2/man1/x509.html

https://my.oschina.net/acmfly/blog/72208

https://www.cnblogs.com/sparkdev/p/10369313.html

https://gohalo.me/post/openssl-self-signed-certificate.html

https://www.openssl.org/docs/man1.1.0/man5/x509v3_config.html

https://bhashineen.medium.com/create-your-own-ocsp-server-ffb212df8e63

https://github.com/bseddon/ocsp-responder/wiki

https://devicepki.idmanagement.gov/certificateprofiles/