OpenSSL 自建CA及签发证书

来源:互联网 发布:toad for oracle mac 编辑:程序博客网 时间:2024/06/02 12:09

ref:
http://rhythm-zju.blog.163.com/blog/static/310042008015115718637/

利用 OpenSSL 建立 CA 及自行签发证书。

1. 创建CA目录结构

在CA的配置文件中,有说明默认CA的目录。
这里写图片描述
创建默认CA下的目录及文件如下图(.old文件和.attr文件是签发证书后自动生成的文件)。
这里写图片描述

其中,
newcerts目录用于存放CA签署(颁发)过的数字证书(证书备份目录)。
private目录用于存放CA的私钥。
文件serial和index.txt分别用于存放下一个证书的序列号和证书信息数据库。
文件serial填写第一个证书序列号(如10000001),之后每前一张证书,序列号自动加1。

2. 生成CA 证书的 RSA 密钥对

genrsa——用于生成 RSA 密钥对的 OpenSSL 命令。

openssl genrsa -des3 -out ./demoCA/private/cakey.pem 2048

这里写图片描述

-des3
使用 3-DES 对称加密算法加密密钥对,该参数需要用户在密钥生成过程中输入一个口令用于加密。今后使用该密钥对时,需要输入相应的口令。如果不加该选项,则不对密钥进行加密。

3. 生成CA证书请求

req——用于生成证书请求的 OpenSSL 命令。

openssl req -new -days 365 -key ./demoCA/private/cakey.pem -out careq.pem

这里写图片描述

-new
生成一个新的证书请求。该参数将令 OpenSSL 在证书请求生成过程中要求用户填写一些相应的字段。

-days 365
从生成之时算起,证书时效为 365 天。

-key ./demoCA/private/cakey.pem
指定 ./demoCA/private/cakey.pem 为证书所使用的密钥对文件。

-out careq.pem
令生成的证书请求保存到文件 careq.pem 。

4. 对 CA 证书请求进行自签名

ca——用于执行 CA 相关操作的 OpenSSL 命令。
OpenSSL 使用证书请求中附带的密钥对对该请求进行签名,也就是所谓的“ self sign ”(自签名)。

openssl ca -selfsign -in careq.pem -out cacert.pem

这里写图片描述

-selfsign
使用对证书请求进行签名的密钥对来签发证书。

-in careq.pem
指定 careq.pem 为证书请求文件。

-out cacert.pem
指定 cacert.pem 为输出的CA根证书。

3&4. 一步完成 CA 证书生成及签名

第三步和第四步,可以用一条命令来完成。

openssl req -new -x509 -days 365 -key ./demoCA/private/cakey.pem -out cacert.pem

这里写图片描述

关键参数:-x509

5. 生成用户密钥对

openssl genrsa -des3 -passout pass:123456 -out userkey.pem 1024

这里写图片描述

-passout arg: arg为对称加密的密码(使用这个参数就省去了console交互提示输入密码的环节)

6. 生成用户证书请求文件

openssl req -new -days 365 -key userkey.pem -out userreq.pem

这里写图片描述

7.对用户证书签名

openssl ca -in userreq.pem -out usercert.pem

这里写图片描述

原因:CA根证书找不到,第4步生成的根证书放的位置不对。把4步生成的cacert.pem移动到./demoCA目录下即可。
这里写图片描述

仍然失败,原因:证书请求文件的单位名称和CA根证书的证书请求文件的单位名称不一致。而在Openssl的配置文件中,要求一致。
这里写图片描述
将[policy_match]的
organizationName = match
改为:organizationName = optional
再次签名成功了。
这里写图片描述

8. 查看证书的内容

openssl x509 -in usercert.pem -text -noout

这里写图片描述

将证书文件后缀名改为crt,在Windows中可以直接查看。
这里写图片描述
这里写图片描述

1 0
原创粉丝点击