一、自建CA前准备
1.1 openssl的主配置文件;
在建立私有CA之前,先来了解一下openssl的主配置文件,其路径:/etc/pki/tls/openssl.cnf
用VIM查看此脚本,在[CA_default],可以查看CA很多默认选项,如下;
dir: CA的主目录
certs: 已颁发证书的存储位置
crl_dir:已吊销证书的存储位置
database:证书索引文件
new_certs_dir:新颁发证书的存储位置
certificate:CA证书文件
serial:证书颁发时的当前序列号
crlnumber:吊销证书的当前序列号
crl:当前使用的CRL
private_key: CA私钥
RANDFILE:私有随机数生成器文件
1.2 CA证书结构和认证协议标准……. x.509
版本号
序列号
签名算法ID
发行者的名称
有效期
主体名称
主体公钥
发行者唯一标识符
主体的唯一标识
扩展
发行者的签名
1.3思路
想构建CA必须要了解CA构建的情况,请先参照加密解密方面博客
简单思路如下;
构建私有CA:
生成私钥;
自签署证书;
(2)给节点发放证书:
节点申请证书:
生成私钥
生成证书签署请求
把请求文件发送给CA
(3)CA签署证书:
验正请求者的信息
签署证书
把签署好的证书发还给请求者
二、自建CA详细步骤;
2.1生成私钥;
CA私钥的存储位置为/etc/pki/CA/private下一般存储名字为cakey.pem的名字权限只有属主有权限
操作步骤如下图所示:
命令解释:
umask077:设置生成的文件的权限,umask取反
genrsa:生成私钥
-out:私钥存放路径
2048:2048字节计算(默认为2048--centos6.6)
2.2生成自签证书
自动在私钥中提取公钥放到自签证书中,用来验证所颁发证书的合法性。注意路径文件名:存放密钥库的目录为private,生成的自签文件存放在/CA目录下。
用vim进入配置文件,填写默认国家、城市等信息
[[email protected] ~]# vim/etc/pki/tls/openssl.cnf
进入脚本后需要修改填写地方,如下图;
保存退出后;
在命令行键入信息及剩余修改信息,如下图;
注意:开始只出现显示国家名称的信息,需要按键回车显示下一行信息
命令解释:
req:生成证书签署请求(PKCS#10格式)
-new: 生成新的证书签署请求;
-key /path/to/keyfile:私钥文件路径;
-out /path/to/somefile: 生成的证书请求文件路径;
-x509:专用于CA生成自签署证书时;
-days 19890:证书有效时长;
index.txt------索引文件用来匹配证书编号
serial----证书序列号存放文件;从01开始
补充:-newkey rsa:NUM 无需事先专门生成私钥文件,而是生成请求时直接生成私成私钥,并提取公钥用于证书;
国家、公司等信息,申请获得证书者需要与自签整数保持一致,否则不可用;自建CA修改后的脚本可以共享给其他节点
三、给节点发放证书:
3.1节点申请证书:在申请证书的主机上进行
3.1.1生成私钥
假设:用httpd服务,因此其位置为/etc/httpd/conf/certs/;所以,操作步骤如下:
解析:Certs创建也可以在conf.d目录,用于存放私钥和证书
umask077;对权限取反
genrsa:生成私钥
httpd.key:自我命名的文件名,也可以以pem结尾
还可在命令行继续执行ll查看是否生成私钥
[[email protected] certs]# ll
total 4
-rw------- 1 root root 887 Dec 9 08:00 httpd.key
3.1.2生成证书签署请求
将生成的自签证书复制到本地;或者用U盘等复制途径
[[email protected] certs]#scp172.16.249.214:/etc/pki/tls/openssl.cnf /etc/pki/tls/
[[email protected] certs]#vim /etc/pki/tls/………….查看配置文件是否修改
[[email protected] certs]#openssl req –new –key httpd.key –outhttpd.csr –days 19890
此时显示国家、城市等信息,与自签证书一样操作
[[email protected] certs]#ls…….查看是否生成,显示如下
Httpd.csr httpd.key
注意:其subject信息中地理位置与organization要与CA的保持一致
3.1.3把请求文件发送给CA
[[email protected]]#scp httpd.csr 172.16.249.214:/tmp/
或者用U盘复制给CA;也可以复制到除/tmp/外的文件里面
3.2 CA签署证书:在CA主机上执行如下命令
3.2.1验正请求者的信息及签署证书
[[email protected] CA]#ls /tmp/…………….在CA主机上查看httpd.csr是否存在
[[email protected] CA]# openssl ca -in /tmp/httpd.csr -out/etc/httpd.crt -days 19890……………………签署证书(默认时长为一年)
[[email protected] CA]#cat index.txt……………..签署完成后可查看到此索引里面会生成信息
[[email protected] CA]#cat serial………………….会更新显示下一个签署证书的号码
3.2.2把签署好的证书发还给请求者:
[[email protected] CA]#scp /tmp/httpd.crt 172.16.100.6:/etc/httpd/conf/certs/……………..放到特定目录下即可,也可U盘复制到REQ-HOST
注意:每一个需要接收服务器发来的证书,并验正证书合法性的客户端主机,都必须拥有CA的证书才能进行;
3.2.3看证书中的相关信息
# openssl x509 -in /path/to/somefile.crt -noout-text|-subject|-serial
四、吊销证书
4.1 获取证书的serial (在证书持有端进行)
[[email protected]]#openssl x509 -in httpd.crt -noout -serial-subject
x509:格式
-in:要吊销的文件路径
-noout:不输出任何额外信息
-serial:生成的序列号
-subjiect:输出subjiect的信息
4.2 CA
4.2.1验正请求者的信息
根据证书持有者提交的serial和subject信息来与index.txt数据库文件中的信息是否一致;
CA可以用cat查看/etc/pki/CA下的inndex.txt对应serial信息,电话核对是否与申请者的一致
4.2.2吊销证书
# openssl ca -revoke/etc/pki/CA/newcerts/SERIAL.pem
吊销后可使用cat查看index.txt,为R开头,表示revoked
解析:-revoke 吊销证书命令
newcerts:刚生成的证书存放目录,为SERIAL.pem,若时间久了,则是/etc/pki/CA/certs目录下
4.2.3 生成吊销证书的编号(如果是第一次吊销)
# echoSERIAL > /etc/pki/CA/crlnumber
4.2.4更新证书吊销列表
# cd /etc/pki/CA/crl/
# openssl ca -gencrl -out thisca.crl
thisca.crl为当前CA的吊销列表,可以自己定义文件名称
注意:查看crl文件的方法;
# openssl crl -in /path/from/somefile.crl -noout–text……..输出吊销列表至text
五、CA管理常用命令语法格式;
(1)查看颁发了多少证书:
[[email protected] CA]# cat /etc/pki/CA/serial………….会显示serial
(2)查看颁发的证书的记录:
[[email protected] CA]# ls /etc/pki/CA/newcerts/……….显示SERIAL.pem
(3)查看待签发证书目录
[[email protected] CA]#ls /etc/pki/csr……………..显示httpd.csr
(4)查看签好的证书目录
[[email protected] CA]#ls /etc/pki/certs…………….httpd.crt
(5)查看证书的序列号和subjiect的信息
[[email protected] CA]# cat /etc/pki/index.txt……………….V开头的信息
(6)查看吊销列表文件
# openssl crl -in /path/from/somefile.crl -noout–text……..CA输出吊销列表至text,其他用户可以查看此文档