创建私有CA及证书颁布详解

一、CA证书简介

    CA 也拥有一个证书(内含公钥和私钥)。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。如果一个用户想鉴别另一个证书的真伪,他就用 CA 的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。证书实际是由证书签证机关(CA)签发的对用户的公钥的认证。 <摘自:百度>

二、建立私有CA
1、 建立私有CA方式:

小范围测试使用openssl
大范围维护大量证书企业使用OpenCA(对openssl进行了二次封装,更加方便使用)

2、基于openssl创建CA证书
(1)配置文件

/etc/pki/ tls/openssl.conf

这里写图片描述
(2)创建步骤
以CentOS6作为CA主机,IP地址为192.168.159.138和CentOS7作为证书请求主机,IP为192.168.159.139。
在CentOS6
(a)创建所需要的文件
[root@centos6/etc/pki/CA]#touch index.txt #数据库索引文件

[root@centos6/etc/pki/CA]#echo 01 >serial

[root@centos6/etc/pki/CA]#cat serial
01

(b)创建私有密钥

[root@centos6/etc/pki/CA]#(umask 077;openssl genrsa -out private/cakey.pem 2048) #生成密钥文件,加密长度为2048

[root@centos6/etc/pki/CA]#openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 666 #生成CA自签证书

-new  生成新证书签署请求
-x509 专用于CA生成自签证书
-key 生成请求用到的私钥文件
-days # 证书的有效期限
-out /PATH/TO/SOMEFILE 证书保存路径

这里写图片描述
注意:上述划红线的地方必须与请求主机的信息相对应,必须是一个签证机构的信息。
在请求证书的主机上
为了使http加密传输步骤如下:
(a)创建存放密钥和CA证书的目录
[root@centos7~]#cd /etc/httpd/
[root@centos7/etc/httpd]#mkdir ssl
[root@centos7/etc/httpd]#cd ssl
(b)生成密钥文件
[root@centos7/etc/httpd/ssl]#openssl genrsa -out http.key 2048

(c)生成证书请求文件
[root@centos7/etc/httpd/ssl]#openssl req -new -key http.key -out http.csr -days 365

这里写图片描述

图中画圆圈的必须与上述图中的相对应,否则签证不成功。
(d)将生成请求的证书文件发送到CA主机上签署

[root@centos7/etc/httpd/ssl]#scp http.csr root@192.168.159.138:/etc/pki/CA/certs/

在CentOS6 CA主机中签署证书

[root@centos6/etc/pki/CA]#ls certs/
http.csr
#查看是否成功传送到指定目录下

[root@centos6/etc/pki/CA]#openssl ca -in certs/http.csr -out certs/http.crt #对证书进行签署

这里写图片描述

[root@centos6/etc/pki/CA]#scp certs/http.crt root@192.168.159.139:/etc/httpd/ssl/ #将签署证书回传至证书请求主机中

在CentOS 7 请求主机上查看是否回传成功

[root@centos7/etc/httpd/ssl]#ls
http.crt http.csr http.key

[root@centos7/etc/httpd/ssl]#rm -rf http.key #为了安全,可以删除此文件


如果我们想对此证书吊销如何操作呢?
在CentOS 6 CA主机上
(a)获取吊销证书的serial
[root@centos6/etc/pki/CA]#openssl x509 -in certs/http.crt -noout -serial -subject

-in 输入证书文件
-noout 证书不输出
-serial 打印serial值
-subject  打印证书拥有者名字

(b)先根据客户提交的serial与subject信息对比检验是否与index.txt文件信息是否一致。如果一致吊销证书。
[root@centos6/etc/pki/CA]#openssl ca -revoke newcerts/01.pem
(c)生成吊销证书标号
注意:只有第一次吊销证书时才执行此命令。
[root@centos6/etc/pki/CA]#echo 01 >crlnumber
(d)更新证书吊销列表
[root@centos6/etc/pki/CA]#openssl ca -gencrl -out thisca.crl
(e)查看证书吊销列表文件
[root@centos6/etc/pki/CA]#openssl crl -in thisca.crl -noout -text

这里写图片描述

如何给子CA颁发证书?
在上述过程中,CentOS7 给子CA颁发证书步骤如下:
(a)在CentOS 7中创建秘钥
[root@centos7~]#cd /etc/pki/CA/
[root@centos7/etc/pki/CA]#openssl genrsa -out private/cakey.pem 2048
(b)生成CA请求
[root@centos7/etc/pki/CA]#openssl req -new -key private/cakey.pem -out subca.csr
(c)将CA请求复制到主 CA上
[root@centos7/etc/pki/CA]#scp subca.csr 192.168.159.138:/etc/pki/CA/certs/
(d)在CnetOS 6上签署
[root@centos6/etc/pki/CA]#openssl ca -in certs/subca.csr -out certs/subca.crt -days 100
(e)将签署过的返回给CentOS 7
[root@centos6/etc/pki/CA]#scp certs/subca.crt 192.168.159.139:/etc/pki/CA/cacert.pem
(f)在CentOS 7.2主机上向CentOS 7申请CA
[root@localhost/app/ftp]#openssl genrsa -out ftp.key 2048
[root@localhost/app/ftp]#chmod 600 ftp.key
[root@localhost/app/ftp]#scp ftp.csr 192.168.1.109:/etc/pki/CA/certs/
(g)在CentOS 7上签署并返还
[root@centos7/etc/pki/CA]#openssl ca -in certs/ftp.csr -out ftp.crt -days 20
[root@centos7/etc/pki/CA]#scp certs/ftp.csr 192.168.1.106:/app/ftp

这样就完成了证书的签发,就可以安装证书并且使用了。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页