内容纲要
概述
- 创建 CA 根证书
- 用根证书签发二级 CA 证书
- 用二级 CA 证书签发服务器,客户端数字证书
环境
- CentOS 8.2
- OpenSSL 1.1.1c FIPS 28 May 2019
准备工作
准备服务器(server_openssl.cnf)和客户端(user_openssl.cnf)的配置文件,后续签发数字证书时要用到对应的配置文件
mkdir /root/openssl
# 服务器,客户端的 openssl.cnf
cp /etc/pki/tls/openssl.cnf /root/openssl/server_openssl.cnf
cp /etc/pki/tls/openssl.cnf /root/openssl/user_openssl.cnf
# 修改上述文件
# 1) [ req ] 小节: 取消 req_extensions = v3_req 前面的注释
# 2) [ req_distinguished_name ] 小节: 注释 0.* 开头的内容
# 3) [ v3_req ] 小节
## 服务端增加如下内容,其中 DNS.1 是服务器域名,多个域名可以用 DNS.2/DNS.3/...
# extendedKeyUsage=serverAuth
# subjectAltName = @alt_names
# [ alt_names ]
# DNS.1 = blog.refusea.com
## 客户端
# extendedKeyUsage=clientAuth
创建运行目录
# 如果想使用其他目录,修改 /etc/pki/tls/openssl.cnf 的 [ tsa_config1 ] 小节
mkdir /etc/pki/CA/newcerts -p
touch /etc/pki/CA/index.txt
# 如果文件不存在,用以下命令创建
echo '01' > /etc/pki/CA/serial
cd /etc/pki/CA
CA 证书
根 CA
openssl genrsa -out ca_root.key 2048
openssl req -x509 -new -key ca_root.key -out ca_root.cer -days 3650 -subj "/C=CN/ST=GD/L=SZ/O=refusea/CN=Refusea-ROOT-CA"
二级 CA
openssl genrsa -out sub_ca.key 2048
openssl req -new -key sub_ca.key -out sub_ca.csr -subj "/C=CN/ST=GD/L=SZ/O=refusea/CN=Refusea-SUB-CA"
openssl ca -extensions v3_ca -in sub_ca.csr -days 3650 -out sub_ca.cer -cert ca_root.cer -keyfile ca_root.key
服务器证书
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=GD/L=SZ/O=refusea/CN=blog.refusea.com"
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.cer -CA sub_ca.cer -CAkey sub_ca.key -CAcreateserial -extensions v3_req -extfile /root/openssl/server_openssl.cnf
客户端证书
openssl genrsa -out user.key 2048
openssl req -new -key user.key -out user.csr -subj "/C=CN/ST=GD/L=SZ/O=refusea/CN=wordpress"
openssl x509 -req -days 365 -in user.csr -signkey user.key -out user.cer -CA sub_ca.cer -CAkey sub_ca.key -CAcreateserial -extensions v3_req -extfile /root/openssl/user_openssl.cnf
# 将根证书, 二级证书和用户证书合并
cat ca_root.cer sub_ca.cer user.cer > user_combination.cer
# 用合并证书生成 p12,这样在导入时能同时导入根证书,注意设置导出密码
openssl pkcs12 -export -inkey user.key -in user_combination.cer -out user.p12
openssl 自建 CA 签发证书