创建CA基础知识
-
CA:证书颁发机构
- 根CA==>子CA==>用户,根CA不直接面对用户,而是通过子CA向用户颁发证书
- openssl配置文件:/etc/pki/tls/openssl.cnf 三种策略:
- 匹配(match):申请证书时所填信息必须和配置文件填的一样
- 支持(supplied):申请证书时所填信息可以不一样但必须填
- 可选(optional):申请证书时所填信息是可选的,可有可无
policy = policy_match #指定要匹配的哪个策略
# For the CA policy
[ policy_match ] #提交信息的匹配策略
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 = supplied
emailAddress = optional
首先检查是否安装软件包,如果没有安装先安装
rpm -qa openssl*
[root@centos7 CA]# rpm -qa openssl*
openssl-libs-1.0.1e-60.el7.x86_64
openssl-1.0.1e-60.el7.x86_64
openssl-devel-1.0.1e-60.el7.x86_64
生成自签名证书
自己给自己颁发证书,用于创建根CA
创建私有CA:
(1)创建CA所需要的文件大部分都有了,还缺两个文件
touch /etc/pki/CA/index.txt #生成证书索引数据库文件
echo 01 > /etc/pki/CA/serial #指定第一个颁发证书的序列号,存放下一个签发证书的序列号
(2)CA自签证书
生成的密钥文件必须放在/etc/pki/CA/privite文件夹下,必须命名为cakey.pem
生成的证书文件必须放在/etc/pki/CA/目录下,名字必须为cacert.pem
(umask 066;openssl genrsa -out /etc/pki/CA/privite/cakey.pem 2048) #生成秘钥可加密
(umask 066;openssl genrsa -out /etc/pki/CA/privite/cakey.pem -des3 2048)#这个是生成加密密钥的两个选一个即可
openssl req -new -x509 -key /etc/pki/CA/privite/cakey.pem -out /etc/pki/CA/cacert.pem -days 7200
到此完成根CA创建,记住匹配规则
创建子CA
(1)创建子CA需要的两个文件,只要是CA就得创建
touch /etc/pki/CA/index.txt #生成证书索引数据库文件
echo 01 > /etc/pki/CA/serial #指定第一个颁发证书的序列号,存放下一个签发证书的序列号
(2)在要申请CA的主机上创建私钥,然后生成申请证书,创建子CA不需要加x509选项,申请证书名字随便起,把证书传到根CA签名,根CA签完名之后传回来后改名叫cacert.pem放在/et/pki/CA目录下,只要是CA目录和文件名就是固定的
(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
openssl req -new -key /etc/pki/CA/private/cakey.pem /etc/pki/CA/subca.csr
--------------------
在根CA的操作,subca.csr文件拷到了/etc/pki/CA/目录下
openssl ca -in /etc/pki/CA/subca.csr -out /etc/pki/CA/certs/subca.crt -days 3650
客户端申请证书
(1)客户端申请证书和上面的大同小异,只是文件名、路径没有什么要求,最好和被申请服务放在一起
(umask 006;openssl genrsa -out /etc/pki/tsl/private/httpd.key 2048)
openssl req -new -key /etc/pki/tsl/private/httpd.key -out /etc/pki/tsl/httpd.csr
(2)传到子CA签发证书,以下在子CA操作然后传回
openssl ca -in /etc/pki/CA/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
注意:如果openssl版本不一样,也可能会导致出现错误
吊销证书
[root@centos7 CA]# cat index.txt
R 180909132313Z 01 unknown /C=CN/ST=beijing/O=mage/OU=opt/CN=www.zhangnan.com/emailAddress=1234QQ.com
V 180910085841Z 02 unknown /C=CN/ST=beijing/L=beijing/O=keji/OU=opt/CN=subca.com/emailAddress=123456@qq.com
V表示证书有效,R表示吊销
吊销证书命令
openssl ca -revoke /etc/pki/CA/newcerts/serial.pem
-
指定第一个吊销证书的编号
- 注意:第一次更新证书吊销列表前,才需要执行
echo 01 > /etc/pki/CA/crlnumber
更新证书吊销列表
openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem
查看crl文件:
openssl crl -in /etc/pki/CA/crl/crl.pem -noout -text