一、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 [email protected]:/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 [email protected]:/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
这样就完成了证书的签发,就可以安装证书并且使用了。