相关知识
CA 是什么
openssl 的配置文件 /etc/pki/tls/openssl.conf 内容详解
1、此文件主要说明了创建CA 时的一些必要的目录文件
2、在此文件中
- match : 表示必须匹配
- optional : 表示可以不匹配
———————————————————————————————–
[ CA_default ] | 默认CA 的相关配置 | |
---|---|---|
dir | = /etc/pki/CA | 此处设定一个变量dir,所有和CA有关的目录文件都在此目录之下 |
certs | = $dir/certs | 存放CA颁发给申请者的若干证书文件列表 |
crl_dir | = $dir/crl | 证书吊销列表 |
new_certs_dir | = $dir/newcerts | 默认新证书的存放位置 |
certificate | = $dir/cacert.pem | 自签名证书,即CA 自己给自己颁发的证书,通过CA 的私钥文件生成 |
serial | = $dir/serial | 序列号,此文件里面存放下一个要颁发证书的序列号 |
crlnumber | = $dir/crlnumber | 吊销证书的序列号 |
crl | = $dir/crl.pem | 吊销证书的序列号的存放文件 |
private_key | = $dir/private/cakey.pem | CA 私钥文件 |
default_days | = # | 证书有效期 |
default_crl_days | = # | 证书吊销列表的发布时间间隔 |
default_md | = sha256 | 所用的hash算法 |
policy | = policy_match | 策略匹配,如果是match,则subject的信息必须是match的;也可改成policy_optional |
countryName | = match | 来自哪个国家 |
stateOrProvinceName | = match | 哪个州(省) |
organizationName | = match | 哪个组织(公司) |
organizationalUnitName | = optional | 哪个部门 |
commonName | = supplied | 给哪个主机或者域名颁发证书 |
———————————————————————————————–
创建CA 和申请证书的步骤
前提环境
主机A :相当于CA 认证中心
主机B :向主机B 中的CA 申请证书,目的是将来做一个web服务器端: https://lovehuxin.me
主机A 上 : 创建CA
1、生成 CA 的私钥文件。CA 作为证书颁发机构,它自己也需要私钥,然后自己给自 己颁发证书
(umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
- umask 066 : 表示umask 的值只对当前设置有效
-out /etc/pki/CA/private/cakey.pem :注意,文件名是系统规定了的,表示将CA 的私钥存放在此文件中
2、创建证书数据索引库文件,里面存放的是CA 颁发的最后一个证书的信息,同时,CA 每颁发一个新证书的时候,都会创建一个index.old 文件,备份之前的证书信息
touch /etc/pki/CA/index.txt
3、指定CA颁发的第一个证书的序列号,必须是两位数,即01 或者10 等都可以
echo 01 > /etc/pki/CA/serial #此时serial文件里面的序列号为01
4、 CA自签证书,即自己给自己颁发证书,通过第 1 步中的私钥文件进行生成
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
- -new : 表示生成新证书的签署请求
- -x509 : 专用于 CA 生成自签证书
- -days : 表示CA 自己的证书的有效期限,以天为单位
- -out /etc/pkiCA/cacert.pem : 证书的保存路径
5、在第 4 步中,终端将会提示输入一些信息
Country Name (2 letter code) [XX]:CN 必须和以下申请证书的客户端一样
State or Province Name (full name) []:henan 必须
Locality Name (eg, city) [Default City]:zhengzhou 可选
Organization Name (eg, company) [Default Company Ltd]:magedu.com
Organizational Unit Name (eg, section) []:m25 可选
Common Name (eg, your name or your server's hostname) []:ca.liting.com 可选
Email Address []: 可选
6、查看CA的自签名证书的相关信息,CA 的自签名证书的颁发者和被颁发者都是自己
openssl x509 -in /etc/pki/CA/cacert.pem -noout -text
7、新建一个目录,用来存放将来来自申请证书的客户端的密钥文件
mkdir /etc/pki/CA/csr
主机B 上 : 申请证书
8、生成将来用作web 服务器的客户端的私钥路径,存放位置不限。之后利用私钥来向CA生成证书申请文件
(umask 066;openssl genrsa -out /app/service.key 4096)
9、将私钥生成证书申请文件
openssl req -new -key /app/service.key -out /app/service.csr
- 会出现终端提示信息,其中国家、省份(州)和组织机构名 必须和之前CA申请证书时的填写一样,否则会报错,因为在 /etc/pki/tls/openssl.conf 里面定义了使用的策略匹配为 policy = policy_match
- 将来此主机向CA 申请其他方面的证书时,同样也可以使用此私钥进行申请,需要将 -out 所生成的文件名进行更改一下
10、将自己证书申请文件传输给CA 认证中心,向CA 申请证书
scp /app/service.csr IP:/etc/pki/CA/csr
主机A 上 : 颁发证书
11、CA 签署证书,并将证书颁发给申请者
openssl ca -in /etc/pki/CA/csr/service.csr -out /etc/pki/CA/certs/service.crt -days 100
- -in : 给哪个申请者进行颁发证书
- -out : 颁发的证书
- -days : 证书有效期。注意,可能申请颁发证书的机构也会写上申请证书的有效天数,但是最后决定权在于CA
12、查看颁发的证书
openssl x509 -in /etc/pki/CA/certs/service.crt -noout -text
至此,创建CA 和申请证书完成
最后在 /etc/pki/CA 下生成的目录文件
.
|– cacert.pem
|– certs
|-- service.crt
– service.csr
|-- crl
|-- csr
|
|– index.txt
|– index.txt.attr
|– index.txt.old
|– newcerts
|-- 01.pem
– cakey.pem
|-- private
|
|– serial
`– serial.old
5 directories, 10 files
.
> cat index.txt
> V 171130125136Z 01 unknown
/C=CN/ST=henan/O=magedu.com/OU=yihongyuan/CN=lovehuxin.me
index.txt 文件里面存放的是最后一个颁发的证书的信息,其中V 表示颁发了的 ; R 表示吊销了的
> cat index.txt.attr
> unique_subject = yes | no
index.txt.attr 文件里面存放的是表示申请者填写信息中的subject是否必须唯一,yes是唯一
[root@test6 /etc/pki/CA]# cat serial
02
[root@test6 /etc/pki/CA]# cat serial.old
01
- serial : 表示下一个要颁发的证书的序列号
serial.old : 表示上一个最后颁发的证书的序列号
cd newcerts/ ; cat 01.pem
newcerts : 表示新颁发的证书的默认存放路径
- 01.pem : 表示颁发给主机B 的证书
查看证书的信息
openssl x509 -in CERT_FILE -noout -text | -dates | - serial | -subject | -issuer
-text | -dates | - serial | -subject | -issuer 分别表示查看颁发的证书的什么信息。其中,text 显示信息最全
查看指定编号的证书状态 :openssl ca -status SERIAL
openssl ca -status 01
SERIAL 表示颁发的证书的序列号
吊销证书
openssl ca -revoke /etc/pki/CA/newcerts/01.pem
吊销 01.pem 的证书
cat index.txt
可以发现其状态已经变成 R ,表示被吊销了的
echo 01 > /etc/pki/CA/crlnumber
吊销的证书在CA 认证中心也会生成一个编号列表,这里是指定第一个吊销的证书的吊销编号
openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem
更新证书吊销列表 。-out /etc/pki/CA/crl/crl.pem 表示证书吊销列表存放的路径
openssl crl -in crl.pem -noout -text
查看被吊销的证书的信息