Fork me on GitHub

建立私有CA和颁发证书

证书申请及签署步骤:

  1、生成申请证书

  2、RA核验

  3、CA签署

  4、获取证书

创建私有CA和申请证书

  创建私有CA:

    openssl的配置文件:

/etc/pki/tls/openssl.cnf 

机器可以搭建多个ca ,默认使用的ca 是CA_default 

  存放位置 具体用处
dir /etc/pki/CA 主要的数据
certs $dir/certs 颁发的证书
crl_dir $dir/crl 证书吊销列表
datebase  $dir /index.txt 证书颁发后存的数据库文件
new_certs_dir $dir/newcerts 新颁发的证书
certificate $dir/cacert.pem ca自己的证书文件
serial  $dir/serial 下一个要颁发证书的证书编号
crlnumber  $dir/crlnumbe 证书吊销列表的编号
crl   $dir/crl.pem  被吊销的证书列表文件
private_key   $dir/private/cakey.pem 存放ca的私钥
RANDFILE  $dir/private/.rand 存放私钥用到的随机数
默认的设置 时长  
default_days   365 默认的证书有效期
default_crl_days 30 默认的吊销列表
default_md  sha256 用到的算法

 

 

 

 

 

 

 

 

 

 

 

 

 

 

policy     policy_match 搭建的ca到底给谁自己服务的 和用户填写的是否相同
countryName 国家 match     相同
stateOrProvinceName 省/州 match     相同
organizationName 组织/公司名 match     相同
organizationalUnitName 办公部门 optional    可选的
commonName 颁发的证书是给那个服务用的 supplied    必须提供
emailAddress 邮箱地址 optional    可选的

 

 

  

 

 

 

 

 

 

 

 

 

policy_anything 

给其他公司使用的  
countryName 国家 optional
stateOrProvinceName 省/州 optional

localityName 

本地名,内部名 optional
organizationName 组织/公司名 optional
organizationalUnitName 办公部门 optional
commonName 颁发的证书是给那个服务用的 optional
emailAddress 邮箱地址 optional

 

 

 

 

 

 

 

 

 

 

 

   建立私有CA,为用户颁发证书

一、搭建CA

1、进入这个目录

cd /etc/pki/CA/

2、生成私钥

(umask 077;openssl genrsa -out private/cakey.pem 4096)

 3、自签名(req 申请,不带x509表示是向ca申请证书,-key 私钥文件 ,-out 输出 -days 指定时间

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650

 交互式多行重定向,可用于脚本时:

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650 <<EOF
> CN
> Shanghai
> ShangHai
> alex
> alex.com > Lv_ZhengYuan@163.com > EOF

 直接查看这个文件是base64的格式,可以转换成文本格式查看

openssl x509 -in cacert.pem -noout -text

可以导出到Windows中修改后缀为crt查看

sz cacert.pem

  4、创建index.txt文件具体意思上面有写

touch /etc/pki/CA/index.txt

5、创建serial,这个文件里面需要写16进制的编号(0F =15,下一个编号就是10,正常从0开始编号,这只是为了记得更清楚)

echo 0F > /etc/pki/CA/serial

 二、申请证书

需要申请证书的机器上,证书最好放在服务的文件夹里 我当前存放的是/data/app文件夹里

cd /data/app

 生成私钥文件

(umask 066;openssl genrsa -out app.key 1024)

通过私钥文件,申请证书(私有证书,国家、省、公司名必须一样) 输入必须信息

openssl req -new -key app.key -out app.csr

把生成的申请文件传输给ca服务器的/data/里

scp app.csr 172.16.8.180:/data/

三、颁发证书

ca服务器收到申请文件,就可以颁发证书了

openssl ca -in /data/app.csr -out /etc/pki/CA/certs/app.crt -days 100

如果报错如下图,就说明缺少index.txt文件

touch /etc/pki/CA/index.txt

继续执行命令,如果报错如下图:说明缺少文件serial

echo 0F > /etc/pki/CA/serial

如果还报错的话,表示刚刚上面步骤中的三种必须相同的信息有不同的

如果因为国家,城市,公司名不一样导致报错,也可以直接直接修改/etc/pki/tls/openssl.cnf 里的配置信息,让原本必须相同的改为可选的就行.

 查看是否确认无误,如果确认没有问题就输两遍y确定

 如下图:证书就生成了

 下图对应的文件或文件夹用处

 certs 下的 app.crt 刚刚生成的证书

private 下的0F.pem 是app.crt的备份文件,系统自己生成的

index.txt 放证书信息(v 表示当前证书是有效的)

 index.txt.old ,系统自己生成的备份,这次还没有生成证书前的index.txt备份

serial.old 系统自己生成的备份,这次还没有生成证书前的serial备份

 

 在windows中查看,但是因为颁发给他的根ca现在还是不可信的,所以这个证书也是不可信的

   两种办法

一、

1、直接点击根ca的安装证书

2、按需选择,是安装到当前用户,还是当前计算机

2、将所有证书存到下列储存--点击浏览--点击受信任的根证书颁发机构--点击确定

 

 4、完成,提示导入成功

5、不确定的话,可以自己查看一下,刚刚的证书是否导入进去了

 导入根证书后,申请的证书就自动受信任了,如下图

 二、应用和功能

  后续导入步骤同上

 查看证书当前状态:和直接查看index.txt文件状态是一样的

openssl ca -status 0F

默认用相同的申请文件,继续颁发多个证书是不行的,不过可以修改配置文件index.txt.attr 中yes改为no即可

吊销证书:状态为R

openssl ca -revoke /etc/pki/CA/newcerts/10.pem

更新证书吊销列表

openssl ca -gencrl -out /etc/pki/CA/crl.prm

报错如下:缺少CRL_number

 

 新建一个crlnumber往里面写入证书编号FF

echo FF > /etc/pki/CA/crlnumber

此时在执行更新吊销列表就可以了

   查看被吊销的证书

openssl crl -in /etc/pki/CA/crl.pem -noout -text

在Windows 中查看该文件需要修改后缀crl.pem.crl

 

posted @ 2020-08-14 16:07  Alex-Lzy  阅读(703)  评论(0编辑  收藏  举报