SANs 是 Subject Alternate Names 的简称,SANs 证书是一种 SSL 证书,它支持添加多个域名,允许将多个域名写入同一个证书中,这样就可以保护多个域名,从而降低了运维人员的管理成本,提高了证书管理效率。SAN 证书有时也称为统一通信证书(统一通信证书)、多域名证书等。
SAN(Subject Alternative Name) 是 SSL 标准 x509 中定义的一个扩展。使用了 SAN 字段的 SSL 证书,可以扩展此证书支持的域名,使得一个证书可以支持多个不同域名的解析。
生成(CA)根证书
- 首先生成 ca 证书私钥
# 这是带有密码的证书私钥
openssl genrsa -des3 -out ca.key 2048
- 生成根证书签名请求文件
openssl req -new -key ca.key -out ca.csr
- 生成 CA 根证书
openssl x509 -req -in ca.csr -signkey ca.key -days 7300 -out ca.crt
创建 openssl.conf
配置文件
再当前目录创建 openssl.cnf
文件,写入下面的内容
[ CA_default ]
copy_extensions = copy
[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no
[req_distinguished_name]
# 国家
C = CN
# 省份
ST = Sc
# 城市
L = Cd
# 组织
O = vsclub
# 部门
OU = vsclub
# 域名
CN = demo.com.net
[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
# 解析域名
DNS.1 = demo.com.net
国家、省份、城市、组织、部门、域名、解析域名请按照自己的需要设置。
生成服务端证书
- 生成服务端私钥
openssl genpkey -algorithm RSA -out server.key
- 使用服务端私钥生成签名请求文件
openssl req -new -nodes -key server.key -out server.csr -config openssl.cnf -extensions 'v3_req'
- 生成服务端证书
openssl x509 -req -in server.csr -out server.pem -CA ca.crt -CAkey ca.key -CAcreateserial -extfile ./openssl.cnf -extensions 'v3_req'
生成客户端证书
- 生成客户端私钥
openssl genpkey -algorithm RSA -out client.key
- 使用客户端私钥生成签名请求文件
openssl req -new -nodes -key client.key -out client.csr -config openssl.cnf -extensions 'v3_req'
- 生成客户端证书
openssl x509 -req -in client.csr -out client.pem -CA ca.crt -CAkey ca.key -CAcreateserial -extfile ./openssl.cnf -extensions 'v3_req'
查看 SAN 证书
openssl x509 -text -noout -in server.crt