openssl制作证书

搭建制作证书的环境

  • 新建一个证书制作的测试目录,比如mycerts
  • 从系统中的openssl安装目录的证书制作配置文件openssl.cnf(比如/etc/ssl/openssl.cnf)拷贝到测试目录中
  • 创建demoCA目录,demoCA相当于是一个完整的CA机构,有一个数据库,管理各种证书文件信息
    /home/mycerts # mkdir demoCA
  • 创建demoCA/newcerts目录,该目录存储用户证书文件,每制作一个用户证书文件,会自动拷贝这里,并用序号命名,比如01.pem
    /home/mycerts # mkdir demoCA/newcerts
  • 创建serial文件,用于记录当前的用户证书文件数量,每次制作一个用户证书文件,里面的值会自动加1
    /home/mycerts # echo '01' > demoCA/serial
  • 创建index.txt文件,用于记录每个用户证书的信息,比如证书标志,证书subject信息,序号等
    /home/mycerts # touch demoCA/index.txt
  • 创建crlnumber文件,用于记录当前的crl文件数量,每次制作一个crl文件,里面的值会自动加1
    /home/mycerts # echo '00' >./demoCA/crlnumber

制作CA证书

创建CA私钥文件(-des3选项要求输入私钥的密码,比如ca123456)

openssl genrsa -des3 -out ca1.key 1024
openssl genrsa -des3 -out ca2.key 1024
openssl rsa -noout -text -in ca1.key //查看RSA格式的私钥文件

利用CA私钥自签署CA证书

openssl req -config openssl.cnf -new -x509 -days 3650 -key ca1.key -out ca1.crt -subj "/C=CN/ST=myprovince/L=mycity/O=myorganization/OU=mygroup/CN=myCa1"
openssl req -config openssl.cnf -new -x509 -days 3650 -key ca2.key -out ca2.crt -subj "/C=CN/ST=myprovince/L=mycity/O=myorganization/OU=mygroup/CN=myCa2"
openssl x509 -noout -text -in ca1.crt //查看x509格式的CA证书

制作用户证书(服务器和客户端都属于用户证书)

创建用户私钥文件(-des3选项要求输入私钥的密码,比如123456)

openssl genrsa -des3 -out user1.key 1024
openssl genrsa -des3 -out user2.key 1024
openssl genrsa -des3 -out user3.key 1024
openssl genrsa -des3 -out user4.key 1024
openssl genrsa -des3 -out user5.key 1024
openssl rsa -noout -text -in user1.key

创建证书请求文件

openssl req -config openssl.cnf -new -key user1.key -out user1.csr -subj "/C=CN/ST=myprovince/L=mycity/O=myorganization/OU=mygroup/CN=myServer1"
openssl req -config openssl.cnf -new -key user2.key -out user2.csr -subj "/C=CN/ST=myprovince/L=mycity/O=myorganization/OU=mygroup/CN=myServer2"
openssl req -config openssl.cnf -new -key user3.key -out user3.csr -subj "/C=CN/ST=myprovince/L=mycity/O=myorganization/OU=mygroup/CN=myServer3"
openssl req -config openssl.cnf -new -key user4.key -out user4.csr -subj "/C=CN/ST=myprovince/L=mycity/O=myorganization/OU=mygroup/CN=myServer4"
openssl req -config openssl.cnf -new -key user5.key -out user5.csr -subj "/C=CN/ST=myprovince/L=mycity/O=myorganization/OU=mygroup/CN=myServer5"
openssl req -noout -text -in user1.csr //查看证书请求文件

利用CA证书签署证书请求文件生成用户证书

openssl ca -config openssl.cnf -keyfile ca1.key -cert ca1.crt -in user1.csr -out user1.pem -days 1095
openssl ca -config openssl.cnf -keyfile ca1.key -cert ca1.crt -in user2.csr -out user2.pem -days 1095
openssl ca -config openssl.cnf -keyfile ca2.key -cert ca2.crt -in user3.csr -out user3.pem -days 1095
openssl ca -config openssl.cnf -keyfile ca2.key -cert ca2.crt -in user4.csr -out user4.pem -days 1095
openssl ca -config openssl.cnf -keyfile ca2.key -cert ca2.crt -in user5.csr -out user5.pem -days 1095
openssl x509 -noout -text -in user1.pem //查看x509格式的用户证书文件,可以看到签署者(Issuer)是哪个CA

//查看一下当前demoCA中管理的信息
/home/mycerts # cat demoCA/index.txt
V 201217031637Z 01 unknown /C=CN/ST=myprovince/O=myorganization/OU=mygroup/CN=myServer1
V 201217031817Z 02 unknown /C=CN/ST=myprovince/O=myorganization/OU=mygroup/CN=myServer2
V 201217031937Z 03 unknown /C=CN/ST=myprovince/O=myorganization/OU=mygroup/CN=myServer3
V 201217031946Z 04 unknown /C=CN/ST=myprovince/O=myorganization/OU=mygroup/CN=myServer4
V 201217031955Z 05 unknown /C=CN/ST=myprovince/O=myorganization/OU=mygroup/CN=myServer5
/home/mycerts # ll demoCA/newcerts/
total 20
-rw-r--r-- 1 root root 3114 Dec 18 11:16 01.pem
-rw-r--r-- 1 root root 3114 Dec 18 11:18 02.pem
-rw-r--r-- 1 root root 3114 Dec 18 11:19 03.pem
-rw-r--r-- 1 root root 3114 Dec 18 11:19 04.pem
-rw-r--r-- 1 root root 3114 Dec 18 11:19 05.pem
/home/mycerts # cat demoCA/serial
06
/home/mycerts # cat demoCA/crlnumber
00

制作证书撤销列表文件

利用CA证书撤销用户证书,然后生成证书撤销列表文件

(注意,可以使用任意一个ca证书来撤销其它ca证书签署的用户证书)
openssl ca -keyfile ca1.key -cert ca1.crt -revoke user2.pem
openssl ca -gencrl -keyfile ca1.key -cert ca1.crt -out test1.crl

openssl ca -keyfile ca2.key -cert ca2.crt -revoke user5.pem
openssl ca -gencrl -keyfile ca1.key -cert ca1.crt -out test2.crl

openssl crl -noout -text -in test1.crl //查看crl文件

转换证书格式

PEM格式转换成DER格式,用户证书、使用、crl文件需要使用不同的命令

openssl x509 -outform der -in user1.pem -out user1.pem.der
openssl rsa -outform der -in user1.key -out user1.key.der
openssl crl -outform der -in test1.crl -out test1.crl.der

PEM格式转换成PFX格式(将私钥和公钥合二为一)

openssl pkcs12 -export -out user1.pfx -inkey user1.key -in user1.pem -certfile ca1.crt



作者:jimmy1984xu
链接:https://www.jianshu.com/p/e401d0027b95
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值