证书申请及签署步骤:
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